如何根据位置计算盒子的数量?
我正在开发一个基于记忆的Python游戏,但遇到了一个问题,就是如何根据鼠标的位置来计算用户点击了多少个方块。
我已经有了这个:
number = ev.pos[y]//boxsize*numboxsx+ev.pos[x]//boxsize
(这一行代码可以让我看到图片左边红色部分的内容)
但是我还需要考虑mx
和my
,它们是边距,因为这些方块是居中的。(我在图片右边用绿色标出了这一点)。
那么,我该如何修改这一行代码,以便在计算方块时考虑到边距呢?
2 个回答
1
一个更好的方法是使用精灵和精灵碰撞检测。如果你把你的方框定义为精灵,那么你就可以检查一个精灵(比如你的鼠标)是否和你的方框发生了碰撞。
这个方法的好处在于,你不需要去处理坐标问题。而且将来你可以移动、调整大小或者增加屏幕上的方框数量,而不需要在这部分代码上做任何修改。
4
你需要从光标的位置中减去边距。可以把它想象成把绝对坐标(光标在屏幕上的位置)转换成相对坐标(光标相对于你的框的位置)。
relx, rely = ev.pos[x] - mx, ev.pos[y] - my
number = rely//boxsize*numboxsx + relx//boxsize