質問: kieru; bakuhatu_sound.play(); //ライフのグローバル変数をインクリメント enemy_life--; } } }
回答: 直接的な回答ではないですが、プログラムの設計をもう少しだけオブジェクト指向として自然になるように工夫(?)した方がよいと思います。 例えば敵機を複数用意するのにEnemy, Enemy2という2つのクラスを定義してますがEnemyは一つのクラスとして定義し、2機の敵を設けたいならインスタンスの方を2つ作るといった考え方にしたほうがよいと思います。 こうなっている理由は(鶏卵的でどちらがどちらの原因になっているかわかりませんが)敵機の座標などの属性をグローバルに定義していることにある気がします。本来は各々のインスタンスの属性はEnemyクラスのインスタンスフィールドとして扱うのが自然です。Playerなどについても同様です。 質問者さんのコードの変数名に着目してみてください。変数名の付け方を player_x pleyer_y .. enemy_x enemy_y ... などとしていますね?これはplayerのx座標だからplayer_xとしているのですが、 player_x => player.x enemy_x => enemy.x のように各々のインスタンスのxというフィールドとして扱った方が自然ということです。 以下のコードを眺めてみてください。着目してほしい点だけにするために元のコードの情報(画像など)はあえて省略しています。 ``` Enemy enemy1, enemy2; void setup() { enemy1 = new Enemy(800, height / 2); enemy2 = new Enemy(800, height / 2); } void draw() { enemy1.move(); enemy2.move(); } class Enemy { float x; float y; Enemy(float x, float y) { this.x = x; this.y = y; } void move() { ... } } ```