gpt4 book ai didi

delphi - 我的 'TCard' 是从哪个组件导出的? (游戏)

转载 作者:行者123 更新时间:2023-12-03 15:48:19 25 4
gpt4 key购买 nike

我正在尝试为游戏制作 TCard 组件。 我应该从哪个类派生它?

这适用于 MTG 或 yu gi Oh 等纸牌游戏。该卡片应具有空白图像,创建后它将加载前 View 或后 View 。

如果它加载前 View ,则它必须有一些标签(用于诸如功率/成本/定义/文本之类的属性)。卡片必须是可点击的。

 type
TCard = class(zzzzzzzzz)
private

现在完成后,我是否需要向构造函数/析构函数添加任何内容?目前我有:

constructor TCard.Create(AOwner: Tcomponent);
begin
inherited Create(AOwner);
end;

{******************************************************************************}
{ Free any resources allocated to component }
destructor TCard.Destroy;
begin
inherited Destroy;
end;

此外,我认为我添加了 onclick 部分,但不确定。在发布区域我有

 {Inherited properties}

property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnClick;
property OnDblClick;

等等...

最佳答案

这取决于您想要做什么,但可见控件通常有两个祖先:

  • TGraphicControl:这是 TControl 的后代,为您实现了 Canvas。您只需重写 Paint 方法即可开始绘图。像这样的控件支持鼠标交互,但无法获取键盘焦点。

  • TCustomControl:这是 TWinControl 的后代。它还实现了 Canvas 并允许您重写 Paint 方法来绘制任何内容。因为它继承自TWinControl,所以它实际上有一个句柄,可以获取键盘焦点并处理键盘消息。

另一个不错的候选者是 TPanel(或者更确切地说 TCustomPanel)。它继承自TCustomControl,因此具有相同的图形属性,但它还包含绘制边框和对齐子控件的功能。不过,我怀疑您是否需要这个。

当然,您可以直接从 TControl 或 TWinControl 派生,但是您必须自己处理其中的一些内容。

请注意,最好将实际的纸牌游戏逻辑放在单独的类中,并且只创建用于绘图的视觉控件。如果这样做,您仍然可以选择是否要为每张卡牌提供单独的控件,或者您可以选择在单个控件上甚至直接在表单上绘制整个卡牌游戏。我怀疑 Windows 的纸牌游戏(如 Free Cell 和 Solitaire)是否有超过 50 个图形控件。

关于delphi - 我的 'TCard' 是从哪个组件导出的? (游戏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19043640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com