如何根据位置计算箱数?

时间:2013-03-23 19:44:32

标签: python pygame

我正在开发一个基于python内存的游戏,并且根据光标的位置有问题找到用户点击的框数。

我已经有了这个:

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

(用这条线我可以看到图片左边的红色)

但我必须考虑:mxmy,它们是边距,因为框是居中的。 (我在图片右侧以绿色显示的内容。)

那么,如何修改该行以获得带边距的方框数?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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