スタッフBLOG

経路探索42015年11月03日

チューターの田村です。

すごい久しぶりになってしまいましたが経路探索のつづきです。

設定を確認しておくと、5×5のマスの中央にキャラクターがいて、1つ上のマスは水たまりがあって進めません。

1ターンに2マス分進めるとして、移動可能な範囲を計算します。

 

前回、整数型の配列numを宣言してnum[2][2]=0だけ代入しました。(その他は-1としておきます。)

 次に残りのマスに数字を埋めていきたいのですが、そのマスが水たまりかどうかを判別しなければなりませんので、水たまりかどうかを判別するためのboolean型の配列を用意しておきます。

boolean型とは真偽を表し、真ならtrue、偽ならfalseです。

 

boolean[][] mizutamari = new boolean[5][5];

 

初期値は全てfalseになっているので水たまりのある[1][2]にtrueを代入します。([y][x]で左上から右にx、下にyだけ進んだところのマスを表すことを思い出して下さい。)

 

mizutamari[1][2] == true;

 

では、数字を埋めていきます。まずはキャラクターのいるマス(num == 0)の上下左右のマスに1を代入します。

人間はキャラクターの位置がすぐわかりますが、コンピューターはわからないので、全てのマスの中からnum == 0となっているマスを探します。全てのマスで繰り返しnum == 0かどうか確認するので、for文を使うと便利です。

 

for (int i = 0; i < 5; i++) {

    for (int j = 0; j < 5; j++) {

        if (num[i][j] == 0) {

            (num == 0の時に実行したい文)

        }

    }

}

 

という感じです。

2つのfor文で5×5のマス全体を動いて、if文でnum == 0かどうかを確認しています。num != 0(ノットイコール)の時は何もせず次のマスへと移動します。

次回、(num == 0の時に実行したい文)を考えてみます。