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