我正在尝试为游戏制作一个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;
等...
答案 0 :(得分:6)
这取决于你想做什么,但通常有两个祖先用于可见控件:
TGraphicControl:这是TControl的后代,为您实现Canvas。您可以覆盖Paint方法以开始绘制。像这样的控件支持鼠标交互,但无法获得键盘焦点。
TCustomControl:这是TWinControl的后代。它还实现了Canvas,允许您覆盖Paint方法以绘制任何内容。因为它来自TWinControl,它实际上有一个句柄,可以获得键盘焦点和处理键盘消息。
另一个好的候选人是TPanel(或者更确切地说是TCustomPanel)。它继承自TCustomControl,因此它具有相同的图形属性,但它还包含绘制边框和对齐子控件的功能。我怀疑你是否需要这个。
当然你可以直接从TControl或TWinControl派生,但是你必须自己处理这些东西。
请注意,最好将实际的纸牌游戏逻辑放在一个单独的类中,并且只为绘图创建可视控件。如果您这样做,您仍然可以选择是否要为每张卡片分别设置控件,或者您可以选择在单个控件上甚至直接在表单上绘制整个纸牌游戏。我怀疑像Free Cell和Solitaire这样的Windows牌游戏是否有超过50个图形控件。