2013-03-23 54 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

更好的方法是使用精靈和精靈碰撞。如果你將你的盒子定義爲精靈,你可以檢查一個精靈(你的鼠標)是否與你的盒子相撞。 這種方法的優點是您不必在座標上操作,並且在將來您可以在屏幕上移動,調整大小或增加框的數量,而無需更改代碼。