如何根据位置计算盒子的数量?

3 投票
2 回答
506 浏览
提问于 2025-04-17 20:04

我正在开发一个基于记忆的Python游戏,但遇到了一个问题,就是如何根据鼠标的位置来计算用户点击了多少个方块。

我已经有了这个:

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

(这一行代码可以让我看到图片左边红色部分的内容)

但是我还需要考虑mxmy,它们是边距,因为这些方块是居中的。(我在图片右边用绿色标出了这一点)。

那么,我该如何修改这一行代码,以便在计算方块时考虑到边距呢?

2 个回答

1

一个更好的方法是使用精灵和精灵碰撞检测。如果你把你的方框定义为精灵,那么你就可以检查一个精灵(比如你的鼠标)是否和你的方框发生了碰撞。

这个方法的好处在于,你不需要去处理坐标问题。而且将来你可以移动、调整大小或者增加屏幕上的方框数量,而不需要在这部分代码上做任何修改。

4

你需要从光标的位置中减去边距。可以把它想象成把绝对坐标(光标在屏幕上的位置)转换成相对坐标(光标相对于你的框的位置)。

relx, rely = ev.pos[x] - mx, ev.pos[y] - my
number = rely//boxsize*numboxsx + relx//boxsize

撰写回答