public void checkForCollision () {
int headX = cells[0].x;
int headY = cells[0].y;
int noOfParts = nPoints;
for(int i = 1; i <noOfParts;i++)
{
int tempX = cells[i].x;
int tempY = cells[i].y;
if(tempX == headX && tempY == headY){
JOptionPane.showMessageDialog(null,"Head hit body");
//EndGameCollectScore etc.
}
}
}
編集:'Cells []'はPoint型の配列であり、noOfPartsはヘビが持っているセグメントの数です
主な質問
上記のコードで、tempXをheadXと比較しようとしていますが、エラーに対してある程度のマージンが必要です。たとえば、+-5ですが、これを実現する方法がわかりません。この背後にある理由は、おそらくxとY変数は数桁離れている可能性があるため、ヘビのセグメントの1つの半径がある場合(以下の代替の「ヘビ」の説明)、私が正しく、値が少しずれている場合でも、次のようになります。バックポジティブ。
また
別
誰かがこれを行うためのより良い方法を提案できるなら?基本的にはヘビゲーム用で、headXとheadYはヘビの頭で、Cellsの残りのX変数とY変数は体です。頭が体に当たるかどうかを比較しようとしています。
私はそれをテストしました、そしてそれはうまくいくように見えました、しかし私がそれを再びテストした後、私がヘビを数マスの間それ自身に二重に戻す場合にのみ衝突を拾うようです。たとえば、体を垂直に横切ると、衝突は検出されません。
また、ヘビが移動する各ブロックの後にこのメソッドが呼び出されることはかなり確信しています。
乾杯、シェーン。
PS睡眠がほとんどなく、血液中の糖分が多すぎる。上記があまり意味をなさないため、さらに明確にする必要がある場合は、私に知らせてください。