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

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

ゼロから始めるJava学習 in バンコク その22 Java入門編5:2次元配列をnewで作成、ドット絵、paiza四コマ漫画やスキルアップゲーム

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

f:id:nobubkk:20180803142726p:plain

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

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

 

 

 

#05:2次元配列をnewで作成する

新しい配列を作るnewキーワードを使って2次元配列を作ってみたい。

まず、長さが5の配列をnewキーワードを使って作ってみる。

int[ ] numberA= new int[6];

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

System.out.print(numberA[i]+" ");

}

System.out.println("");

System.out.println(numberA.length);

System.out.println("-------");

これで、

0 0 0 0 0 0

6

-------

と表示された。

 

Javaでは数値の配列の場合、初期値は0となるので、配列の中身はすべて0となっている。

 

では、これを0~8まで順番に表示させてみよう。

int[ ] numberA= new int[8];

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

numberA[i]= i;

System.out.print(numberA[i]+" ");

}

System.out.println("");

System.out.println(numberA.length);

System.out.println("-------");

これで、

0 1 2 3 4 5 6 7

8

-------

と表された。

 

なるほどなるほど。

では、これを2次元配列に応用してみよう。

その場合、このようなコードになる。

int[ ] [ ] numberB= new [4] [5]

これは縦4行、横5列の2次元配列を表している。

 

これを出力してみよう。

int [ ] [ ] numberB= new int[4][5];

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

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

numberB[i][j]= i*10+j;

System.out.print(numberB[i][j]+" ");

}

System.out.println("");

System.out.println("-------");

}

これで、

0 1 2 3 4

-------

10 11 12 13 14

-------

20 21 22 23 24

-------

30 31 32 33 34

-------

 

4行5列の配列の出力ができた。

 

演習問題ではこういう問題が出た。

2次元配列で数値の初期値は0だが、それを3にして出力するという問題だ。

出力してほしい結果は、

333

333

 

まずは、初期値0で出力するコードをかいてみる。

int [ ] [ ] array= new int [2][3];

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

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

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

}

System.out.println("");

}

これで、

000

000

と出力される。

 

では、この初期値0はどうやって変えればよいのか。

配列をすべて3と表示させてやれば良さそうだ。

int [ ] [ ] array= new int [2][3];

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

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

array[i][j]=3;

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

}

System.out.println("");

}

これで、

333

333

と表示された。

 

うんうん。

本当はこれを思いつくのに時間がかかったんだけど、まあできて良かった。

  

#06:ドット絵を表示する

次はドット絵を表示するそうだ。

ここまでの流れで絵なんてまったく予想もつかなかったが、どうなるのだろうか。

int enemyImage =
{{0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0},
{0,0,0,1,0,1,0,0,0,0,1,1,1,0,0,0},
{0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0},
{1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1},
{1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1},
{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0}};

 

これが最初から与えられている。

この2次元配列はカンマごとに改行されている。

ひとまずここから数字だけを抜き出すコードを書いてみよう。

拡張for文で書いてみる。

for (int line[ ] : enemyImage){

for (int dot : line){

System.out.print(dot);

}

System.out.println("");

}

これで、数字だけ抜き出せた。

0000100000010000 0001010000111000 0010000111111100 1100000000000011 1001110000111001 1100000110000011 0111111111111110

 

次に数字が1のときに#、数字が0ならスペースを表示させてみよう。

for (int line[ ] : enemyImage){

for (int dot : line){

if (dot==1){

System.out.print("#");

} else {

System.out.print(" ");

}

}

System.out.println("");

}

 

これで、できあがりー!

# # # # ### # ####### ## ## # ### ### # ## ## ## ##############

 

このキャラクターは、paizaラーニングのマンガに出てくるネコ先生というものらしい。

なんのこっちゃと思ったので、調べたらpaizaラーニングにはいろいろなコーナーが用意されていた。

 

ぱいじょ:毎週月曜に更新される四コマ漫画

paiza.jp

 

paizaオンラインハッカソン・ゲームイベント一覧

 

paiza.jp

 

 なにやらいろいろなゲームがあった。

プログラミングを使ったゲームらしい。

個人的に笑ったのが、「もし次の常駐先が、女子エンジニアばっかりだったら」(難易度★★★)というゲームタイトル。

紹介文は、「ITエンジニアの夢をかなえる楽しく華やかな環境での業務シミュレーションを行いながら、さまざまな難易度のプログラミング問題を解くゲーム。
最高の開発現場を作れるかどうかは、あなたのプログラミングスキルと采配次第!ぜひ挑戦してみてください!」

paiza.jp

なるほどねー、こんな夢を見たくなるということは、現実はこの真逆だってことだな。

ちょっとエンジニアの方々には同情してしまった。

だから、paizaにはアニメの女の子たちがあふれているんだな。

納得。

 

#07:3次元配列での複数のドット絵を表示する

今度は3次元配列に挑戦。

結論から言えば、2次元の時と同じことだったので、それほどドット絵の表示自体は難しいことではなかった。

int[] letters =
{{{0,0,1,1,0,0},
{0,1,0,0,1,0},
{1,0,0,0,0,1},
{1,1,1,1,1,1},
{1,0,0,0,0,1},
{1,0,0,0,0,1}},
{{1,1,1,1,1,0},
{1,0,0,0,0,1},
{1,1,1,1,1,0},
{1,0,0,0,0,1},
{1,0,0,0,0,1},
{1,1,1,1,1,0}},
{{0,1,1,1,1,0},
{1,0,0,0,0,1},
{1,0,0,0,0,0},
{1,0,0,0,0,0},
{1,0,0,0,0,1},
{0,1,1,1,1,0}}};

では、これを表示させてみよう。

 

for (int[ ] [ ] img : letters){

for (int[ ] line : img){

for(int dot : line){

if (dot ==1){

System.out.print("#");

} else {

System.out.print(" ");

}

}

System.out.println("");

}

}

これで、このように出力された。

## # # # # ###### # # # # ##### # # ##### # # # # ##### #### # # # # # # ####

拡張for文で配列を順番に取り出すことがポイントだということだった。

 

まとめ

今回は、2次元配列について少し理解が深まったような気がする。

しかし、それよりも四コマ漫画やゲームについてのことが衝撃的だった。

四コマ漫画はすでに現時点で135話もある。

ゲームについては、アマゾン商品券をくれるなどのプロモーションも盛んにおこなわれているようだった。

収入の柱は人材紹介なのだろうが、その囲い込み戦略がとてもうまい。

格安で勉強させて、スキルチェックなどを公開して、かわいい女の子でオタク的なエンジニアを釣って、ゲーム感覚でプログラミングをやらせてpaizaに引き込ませる。

その中で良い人材を高値で売り飛ばす!(言葉は悪いが)

きっとこういうビジネスモデルなんだろうな。

実にうまい。

勉強になるな、paiza。 

 

 

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

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

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

 

 

 

 

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

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

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