从哪个组件派生我的'TCard'? (游戏)

时间:2013-09-27 05:58:23

标签: delphi delphi-xe2

我正在尝试为游戏制作一个TCard组件。 我应该从哪个班级派生出来?

这适用于像MTG或yu gi这样的纸牌游戏哦。该卡应具有空白图像,并且在创建时将加载前视图或后视图。

如果加载前视图,则必须有一些标签(对于power / cost / def / text等属性)。卡必须是可点击的。

 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;

等...

1 个答案:

答案 0 :(得分:6)

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

  • TGraphicControl:这是TControl的后代,为您实现Canvas。您可以覆盖Paint方法以开始绘制。像这样的控件支持鼠标交互,但无法获得键盘焦点。

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

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

当然你可以直接从TControl或TWinControl派生,但是你必须自己处理这些东西。

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