ゲームプログラミング相談室
■ このスレッドは過去ログ倉庫に格納されています
0220名前は開発中のものです。
02/01/27 16:39ID:???初歩的すぎるが、暇なので擬似コード書いてみた。
すべてのマスに対応する移動可能残量ワークを用意。ゼロ初期化。
でスタート
関数(位置, 移動可能残量)
{
位置が障害物なら何もしないでリターン
移動可能残量でその位置に入れないのならリターン
移動可能残量 -= このマスに入るのに必要な消費量
その位置のワークにすでに移動可能残量以上の値が入っていたらリターン
その位置のワークに移動可能残量を記入
if ( 移動可能残量がまだある ) {
関数(上, 移動可能残量)
関数(下, 移動可能残量)
関数(左, 移動可能残量)
関数(右, 移動可能残量)
}
}
これで
関数(Aの位置, B)した結果のワークが0でないところが移動可能範囲として描画できる。
たどるべき最短ルートは、任意のポイントのワークの数字を読んで
その隣の数字が大きくなる方向をたどっていけばAまで到達できる。
■ このスレッドは過去ログ倉庫に格納されています