2013-03-23 56 views
3

我正在开发一个基于python内存的游戏,并且根据游标的位置发现用户点击的框的数量有问题。如何根据盒子的位置计算盒子的数量?

我已经有这样的:

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

(与此行中我得到了什么,你可以在红色的图片看到左边)

但是我不得不考虑:mxmy,他们是保证金,因为这些箱子都居中。 (我以右图显示绿色)。

那么,我该如何修改这一行来获取带边距的方块的数量呢?

回答

4

你需要从光标位置减去利润。把它看作是从绝对坐标(光标在屏幕上)翻译到相对坐标(光标相对于你的盒子)。

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

谢谢!!!!我试图解决这个问题好几个星期,最后你救了我的命!多谢兄弟!你的想法它的工作如此之好! – Santiago 2013-03-23 20:00:59

1

更好的方法是使用精灵和精灵碰撞。如果你将你的盒子定义为精灵,你可以检查一个精灵(你的鼠标)是否与你的盒子相撞。 这种方法的优点是您不必在坐标上操作,并且在将来您可以在屏幕上移动,调整大小或增加框的数量,而无需更改代码。