我正在开发一个基于 python 内存的游戏,并且根据光标的位置查找用户单击的框数时遇到问题。
我已经有了这个:
number = ev.pos[y]//boxsize*numboxsx+ev.pos[x]//boxsize
(通过这条线,我得到了您在图片左侧看到的红色)
但我必须考虑:mx
并且my
,它们是边距,因为框居中。(我在图片右侧以绿色显示的内容)。
那么,如何修改行以获取带边距的框数?
您需要从光标位置减去边距。将其视为从绝对坐标(光标在屏幕上的位置)转换为相对坐标(光标相对于框的位置)。
relx, rely = ev.pos[x] - mx, ev.pos[y] - my
number = rely//boxsize*numboxsx + relx//boxsize
更好的方法是使用精灵和精灵碰撞。如果您将您的盒子定义为精灵,您可以检查精灵(您的鼠标)是否与您的盒子碰撞。这种方法的优点是您不必对坐标进行操作,并且将来您可以在屏幕上移动、调整大小或增加框的数量,而无需在此侧更改代码。