質問: 0) { printf("game crer\n"); Sleep(wait_time); break; } Sleep(wait_time);//
回答: こんにちは。 コードを読む根性が足りないので外していたらすいません。 > > 「動ける(壁でない)方向のうち、移動後の距離が一番自機に近い方向に移動する」というアルゴリズムにしようと思ったのですが、全くコードが思い浮かべません。 > > > 書かれているアルゴリズムをそのまま記述することを考えましょう。 動かそうとしている敵の周囲(上下左右の4方向?)の各座標について処理します。 そこが壁でない場合、自機との距離を計算します。 最大4つの距離が求まりますので、その内の自機との距離が最小な座標を採用します。 高々4方向だけなら、下記のようなイメージでべた書きも有りと思います。 ``` double distance=DBL_MAX; int mx=0; int my=0; if (field[ex-1][ey] == 通路) { double dist=自機との距離; if (dist < distance) { distance=dist; mx=ex-1; my=ey; } } 上記と同様なif文を更に3つ(上下と右) if (distance == DBL_MAX) { // 壁に囲まれて移動不可 } ```