ブロックをかわすためにプレーヤーを画面上で動かさなければならない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;
}