3

私はPythonメモリベースのゲームを開発していますが、カーソルの位置に応じて、ユーザーがクリックするボックスの数を見つけるのに問題があります。

私はすでにこれを持っています:

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

(この行を使用すると、写真の左側に表示されているものが赤で表示されます)

しかし、私は考慮しなければなりません:mxそしてmy、ボックスが中央に配置されているので、それらはマージンです。(写真の右側に緑色で表示されているもの)。

では、マージンのあるボックスの数を取得するために行を変更するにはどうすればよいですか?

4

2 に答える 2

4

カーソル位置からマージンを引く必要があります。これは、絶対座標(カーソルが画面上にある場合)から相対座標(カーソルがボックスを基準にしている場合)に変換すると考えてください。

relx, rely = ev.pos[x] - mx, ev.pos[y] - my
number = rely//boxsize*numboxsx + relx//boxsize
于 2013-03-23T19:49:17.660 に答える
1

はるかに優れたアプローチは、スプライトとスプライトの衝突を使用することです。ボックスをスプライトとして定義する場合は、スプライト(マウス)がボックスに衝突したかどうかを確認できます。このアプローチの利点は、座標を操作する必要がないことです。将来的には、こちら側のコードを変更せずに、画面上のボックスの移動、サイズ変更、または量の増加を行うことができます。

于 2013-03-23T21:37:42.123 に答える