スタッフBLOG

経路探索32015年10月13日

チューターの田村です

前回、障害物のある時の経路探索の考え方をやったので、実際にプログラムしてみたいと思います。

とはいえ、javaの基礎からやると大変なことになるので、核となるところだけです。

 

アルゴリズムは前回のを参照してください。

まずは、5×5のマスに数字を対応させたいので、int型の配列を考えます。

intとは整数のことで、配列とは数学でいう数列みたいなものです。

ただし、配列は添え字が0から始まるので注意が必要です。

名前は何でも良いのでnumとしておきます。

javaで書くとこんな感じになります。

 

int[][] num = new int[5][5];

 

[][]は添え字で、今は座標だと思っておけば良いです。

ただし、座標の原点は左上で、num[y][x]で右にx、下にyだけ進んだところに対応します。

 

何もしないと、初期値は全て0になっていると思いますが、前回の説明に合わせるために全て-1だとしましょう。

これに、数字を割り振っていきます。

まずは、キャラクターの位置(2,2)に0を代入します。

 

num[2][2] = 0;

 

javaでは=は代入を表します。

 

次に上下左右に数字を振っていきます。

繰り返し処理をする時はfor文や、while文を使うと楽です。今回はfor文を使いましょう。

for文は以下のように使う事が多いです。

 

for (int i = 0; i < (繰り返す回数); i++){
    (繰り返したい文);
    }

 

まずint型のiを宣言して0を代入します。

次に、i < (繰り返す回数)が真なら(繰り返したい文)を実行します。もし偽になればfor文は終わりです。

(繰り返したい文)が行われたらiに1を足し(i++がこの役割です)、同様のことを繰り返します。

ここで、iは(繰り返したい文)にも使えることに注意してください。

例えば

 

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

    system.out.println(“これは” + i + “回目です”);

}

 

などと書くと

 

これは0回目です

これは1回目です

 

と表示されます。

次回、for文を使って数字を代入してきます。