質問: 敵の移動パターンで質問があります。 ``` void move_enemy0() { counter++; if(y<100){ x=300; y++; } if(y>=100){ x+=1; } if(x>350){ x--; } ``` 上はEnemyのクラスで宣言している敵の動きです。 最初はまっすぐ進んできて、ある座標で停止し、そのあとインベーダーゲームのように左右に動くようにしたいのですが、上のプログラムのように打ち込むと何故かif(x>350)の条件だけを満たして停止してしまいます。 そのあと、動きを反転させるためにx--を入れたのですが、なぜこの条件だと停止するのでしょうか。
回答: x と y の初期値はきちんと設定されていますか? 仮に x = 400, y = 400 だとすると最後しか実行されません。 また初期設定がきちんとされていたとしても往復はしないでしょう。x は 351 になった後 351 と 350 の間しか動きません。 きちんと動かすには、まず x = 300, y = 0, dx = 0, dy = 1 と初期設定してください。 移動は x += dx, y += dy とします。 y >= 100 で dx = 1, dy = 0 に変更してください。また dx >= 350 で dx = -1 にしてください。 追記 dx >= 350 は x >= 350 の誤りです。