3

我正在开发一个基于 python 内存的游戏,并且根据光标的位置查找用户单击的框数时遇到问题。

我已经有了这个:

number = ev.pos[y]//boxsize*numboxsx+ev.pos[x]//boxsize

(通过这条线,我得到了您在图片左侧看到的红色)

但我必须考虑:mx并且my,它们是边距,因为框居中。(我在图片右侧以绿色显示的内容)。

那么,如何修改行以获取带边距的框数?

4

2 回答 2

4

您需要从光标位置减去边距。将其视为从绝对坐标(光标在屏幕上的位置)转换为相对坐标(光标相对于框的位置)。

relx, rely = ev.pos[x] - mx, ev.pos[y] - my
number = rely//boxsize*numboxsx + relx//boxsize
于 2013-03-23T19:49:17.660 回答
1

更好的方法是使用精灵和精灵碰撞。如果您将您的盒子定义为精灵,您可以检查精灵(您的鼠标)是否与您的盒子碰撞。这种方法的优点是您不必对坐标进行操作,并且将来您可以在屏幕上移动、调整大小或增加框的数量,而无需在此侧更改代码。

于 2013-03-23T21:37:42.123 回答