現在,実験で使用するゲーム環境を作製しているのですが,行き詰まってしまったため質問させて頂きました.
現在の方針は,
①field[10][10],log[10][10]のようにフィールドマップと探索済みのログをそれぞれ2次元配列で用意する.
(このあたりを参考にさせて頂きました.http://dixq.net/g/26.html)
fieldには敵(2)や餌(3)等を配置し,logは最初は全て空(0)にしておきます.
また,敵は一定の歩数歩く毎に空いているマスにランダムに出現します.
②自分の周囲は,マンハッタン距離で2マスとなるような菱形の範囲の知覚が出来るものとします.
その際,周囲は,以下のように配列を作り,
shuui[13] ={ field[y-1][x], field[y+1][x], field[y][x-1], field[y][x+1], field[y-2][x], field[y+2][x], field[y][x-2], field[y][x+2],field[y-1][x-1], field[y-1][x+1], field[y+1][x-1], field[y+1][x+1], field[y][x] };
logも以下のように表します.
log_shuui[13] ={ log[y-1][x], log[y+1][x], log[y][x-1], log[y][x+1], log[y-2][x], log[y+2][x], log[y][x-2], log[y][x+2],log[y-1][x-1], log[y-1][x+1], log[y+1][x-1], log[y+1][x+1], log[y][x] };
③そして,以下のように探索済みを記録しました.
//log[]に自分の周囲の情報を記録
for(int a=0; a<12; a++){
if(log_shuui[a] < 10) {
log_shuui[a] = shuui[a];
} else if(log_shuu[a] >= 10){ //移動済みのマスは10足してlogに記録する.
log_shuu[a] = shuui[a] + 10;
}
}
以下のような処理をし,「今,敵がいたマスに以前何もなかったら処理Aを実行する」としたいのですが,
同じ敵の周りを歩いていてもずっと処理Aが実行されてしまいます. ちなみに,③の記録は毎回プログラムの最後に行っています.
説明が下手で申し訳ありませんが,敵の出現に関する記録をうまく行うにはどうすれば良いでしょうか?皆様のお力添えを頂ければ大変助かります.
よろしくお願いします.
なお,環境はwindows vista, VC++2008です.