我正在开发一个基于python内存的游戏,并且根据游标的位置发现用户点击的框的数量有问题。如何根据盒子的位置计算盒子的数量?
我已经有这样的:
number = ev.pos[y]//boxsize*numboxsx+ev.pos[x]//boxsize
(与此行中我得到了什么,你可以在红色的图片看到左边)
但是我不得不考虑:mx
和my
,他们是保证金,因为这些箱子都居中。 (我以右图显示绿色)。
那么,我该如何修改这一行来获取带边距的方块的数量呢?
我正在开发一个基于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
更好的方法是使用精灵和精灵碰撞。如果你将你的盒子定义为精灵,你可以检查一个精灵(你的鼠标)是否与你的盒子相撞。 这种方法的优点是您不必在坐标上操作,并且在将来您可以在屏幕上移动,调整大小或增加框的数量,而无需更改代码。
谢谢!!!!我试图解决这个问题好几个星期,最后你救了我的命!多谢兄弟!你的想法它的工作如此之好! – Santiago 2013-03-23 20:00:59