noblog!バンコク生活はなぜ良いのか

生のバンコク情報をおとどけ!

ゼロから始めるJava学習 in バンコク その23 Java入門編5:2次元配列で地図を表示

もうメシは食ったかの?儂はノブじゃ。

f:id:nobubkk:20180803142726p:plain

儂はいま「paizaラーニング」を利用してJavaの勉強に取り組んでいる。

paizaラーニングJava入門編全10講座中、入門編5まで進めている。

 

 

 

#08:2次元配列で地図を表示する1

2次元配列を利用してカンタンな地図を作っていくそうだ。

どのようなものになるのだろうか。

 

まずは、縦10横20の地図を作ってみる。

String[ ][ ] worldMap= new String[9][20];

for (int i=0; i<worldMap.length; i++){

for (int j=0; j<worldMap[i].length; j++){

worldMap[i][j]= "森";

System.out.print(worldMap[i][j]);

}

System.out.println("");

}

これで森の地図が完成。

森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森

 

次は左上に"城"、右上には"町"、右下にも"町"をつくってみよう。

繰り返し処理が始まる前に城と町の場所を決めて、その後nullの中に森を配置していく。

String[ ][ ] worldMap= new String[9][20];

worldMap[0][0] = "城";

worldMap[0][19] = "町";

worldMap[8][19] = "町";

for (int i=0; i<worldMap.length; i++){

for (int j=0; j<worldMap[i].length; j++){

if (worldMap[i][j]==null){

worldMap[i][j]= "森";

}

System.out.print(worldMap[i][j]);

}

System.out.println("");

}

これで、このように表示された。

城森森森森森森森森森森森森森森森森森森町 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森森 森森森森森森森森森森森森森森森森森森森町

 

なるほどねー。

 なるほどなるほど・・・と一人ぶつぶつ言いながら作業していた。

 

#09:2次元配列で地図を表示する2

さらにこの地図に道を加えていくそうだ。

どのようにするのだろうか。

 

その前に地図の左側に行番号を入れる作業の説明があった。

最初のループ処理のすぐ後に「i+":"」を入れるだけだが、最初聞いてた時は意味不明だった。

プログラミングは上から順番に処理されるので、「i+":"」が上にあれば「森」などの前に出てくるんだな。

考えてみれば当たり前だったけど、もともとできている配列の1列目に入れていく方法と考えるとどうすればいいのか分からなかった。

 

道の方は、偶数行に森の代わりに道を入れていきたい。

偶数業の表し方は、2で割ったあまりが0とするようだ。

さらに城や町はそのままで森のところだけ道を入れたいので、コードは次のようになる。

String[ ] [ ] worldMap= new String[9][20];

worldMap[0][0]="城";

worldMap[0][19]="町";

worldMap[8][19]="町";

for (int i=0; i<worldMap.length; i++){

for (int j=0; j<worldMap[i].length; j++){

if (worldMap[i][j]== null){

if(i%2==0){

worldMap[i] [j] ="+";

}

else {worldMap[i] [j] ="森";

}

}

System.out.print(worldMap[i][j]);

}

System.out.println("");

}

これで、こう表された。

城++++++++++++++++++町 森森森森森森森森森森森森森森森森森森森森 ++++++++++++++++++++ 森森森森森森森森森森森森森森森森森森森森 ++++++++++++++++++++ 森森森森森森森森森森森森森森森森森森森森 ++++++++++++++++++++ 森森森森森森森森森森森森森森森森森森森森 +++++++++++++++++++町

 

さらに縦にも道を入れてみよう。

5の倍数列に道を入れてみる。

String[ ] [ ] worldMap= new String[9][20];

worldMap[0][0]="城";

worldMap[0][19]="町";

worldMap[8][19]="町";

for (int i=0; i<worldMap.length; i++){

for (int j=0; j<worldMap[i].length; j++){

if (worldMap[i][j]== null){

if(i%2==0 || j%5==0){

worldMap[i] [j] ="+";

}

else {worldMap[i] [j] ="森";

}

}

System.out.print(worldMap[i][j]);

}

System.out.println("");

}

これで、縦にも道を入れることができた。

城++++++++++++++++++町 +森森森森+森森森森+森森森森+森森森森 ++++++++++++++++++++ +森森森森+森森森森+森森森森+森森森森 ++++++++++++++++++++ +森森森森+森森森森+森森森森+森森森森 ++++++++++++++++++++ +森森森森+森森森森+森森森森+森森森森 +++++++++++++++++++町

 

できたー!

 

まとめ

今回は、こうして書いてみたが実際は何度も何度も間違いを見つけて書き直し、途中で分からなくなってうんうんうなりながら書いていた。

説明を聞いているだけだと簡単そうに聞こえるのだが、自分で一から考えて書くとそうもいかない。

日々精進をしていこう。

  

 

※有料講座の内容は少し問題等を改変しています。

これからプログラミングの勉強を始めようと思っている方、ぜひ一緒にやっていきましょう。

今宵はここまで。また次を楽しみにしておれ。

 

 

ページを閉じる前に、クリックしてから閉じてね。よろしくお願いします!

にほんブログ村 海外生活ブログ タイ情報へ
にほんブログ村

にほんブログ村 海外生活ブログへ
にほんブログ村