0

ブロックをかわすためにプレーヤーを画面上で動かさなければならないJavaの落下ブロックゲームに取り組んでいます。ブロックに当たるたびに、ブロックの種類に応じて、プレイヤークラスのintが減少または増加します。プレイヤーがブロックに当たると、現在見えないブロックが画面外に出るまでintが下がり続けるという問題があります。基本的に、オブジェクト配列をチェックする方法が必要です。オブジェクトが(delete == true)などの指定された条件を満たすと、配列内のそのブロックの現在の位置がnullに設定されます。

ブロック位置を更新する方法:

public void dropFoods(int speed) {
    for (int x = 699 - speed; x >= 0; x--) {
        for (int y = 0; y < 7; y++) {
            if(x > (699 - GUI.HEIGHT) - 10) {
                food[y][x] = null;
                continue;
            }
            food[y][x + speed] = food[y][x];
            food[y][x] = null;

        }
    }
}

ブロックを描く方法(食べ物はさまざまな種類のブロックです):

for(int x = 0; x < food.length; x++) {
            for(int y = 0; y < food[x].length; y ++) {
                Object o = food[x][y];
                if(o instanceof Apple) {
                    new Apple(x * 100, y - Apple.HEIGHT, g);            
                }
                if(o instanceof Burger) {
                    new Burger(x * 100, y - Burger.HEIGHT, g);          
                }
            }
}

プレイヤーとの衝突を検出する方法:

if(Food.getHitBox().intersects(Player.hitBox())) {
        willDraw = false;
        Player.weight -= 1;
}
4

1 に答える 1

0

最初に、より多くのコードとデバッグ結果を提供する必要があります。

if(Food.getHitBox().intersects(Player.hitBox())) {
        willDraw = false;
        Player.weight -= 1;
}

では、プレイヤーが何かに当たったとき、食べ物のオブジェクトをマップから削除しますか? このコードによると、そうではないからです。

于 2013-01-26T22:20:26.063 に答える