一种创建简单游戏GUI的方法

时间:2010-02-02 23:58:29

标签: c++ user-interface

我已经能够找到很多关于游戏实际逻辑开发的信息。我真的很想做一个纸牌游戏,但我根本不明白如何根据鼠标位置选择一个对象(或至少是正确的方式)首先我想到了边界框检查,但并不是我的所有位图都是矩形。然后我想用每个具有不同颜色的物体制作一个隐藏的缓冲区,但是这样做必然是荒谬的。我想知道它是如何完成的。例如,Adobe Flash如何知道鼠标下的对象?

由于

2 个答案:

答案 0 :(得分:6)

您的问题是如何判断鼠标是否位于非矩形位图上方。我假设您的所有位图都是矩形,但它们具有透明区域。您必须已经能够以某种方式告诉您(矩形)位图的哪个部分是透明的,这取决于您使用的方案(例如,如果您将颜色指定为透明或使用位掩码)。您还将了解画布上位图的z顺序(分层)。然后,当您在位置(x,y)处检测到单击时,您需要找到跨越该像素的矩形位图列表。按z顺序对它们进行排序,并为每个检查像素是否透明。如果是,请转到下一个位图。如果不是,则这是所选的位图。

答案 1 :(得分:1)

或者您可以使用几何解决方案。您应该存储/管理卡片/项目的几何图形。例如,圆形,矩形等形状列表。

如果你有很多时间,可能是三角形或椭圆形。说三角形有或没有一个点是一个数学问题如果三角形非常薄(算法有一个划分),它可能在数值上不稳定。。修复:How to determine if a point is in a 2D triangle?

我投票支持abc。