広告
広告
↓発売日:2017年04月04日↓
Java 第2版 入門編 ゼロからはじめるプログラミング (プログラミング学習シリーズ) 新品価格 |
初日の今回はブロックパズル作りの大まかな流れだけを説明したいと思います!
まずはこちらの画像をご覧ください。
こんな感じのブロックパズルの中身をのぞいて見ると・・・。
こんな感じになっていたりします!
びっくりですね!
だいぶ見づらいですが、壁が「9」、ブロックが「1」、空間が「0」に置きかわってます!
この数字を使って計算する事でブロックパズル全体の動きを表現します。
もう少し詳しく見てみましょう!
2次元配列を平面のようにとらえて数字を当てはめていきます。
ブロック情報を保存します。
固まったブロックなど途中の状態を保存します。
※ステージの幅がさきほどの画像より少し大きいのは後ほど説明いたします!
広告
「0」・・・何もない
「1~6」・・・ブロック
「9」・・・壁
この数字を使って落下、移動、回転、固定、クリアなどを計算していきます!
ブロックが「1~6」となっているのは他の種類のブロックの分です。
今回は6種類のブロックを発生させたいので「1~6」となっております。
「 」・・・何もない
「□」・・・ブロック
「■」・・・壁
表示する時にブロックなどに置きかえます!
ブロック(int block[][] = new int[4][4])
0,0,0,0
0,1,1,0
0,1,1,0
0,0,0,0
↓表示↓
ステージ(int stage[][] = new int[23][18])
9,0,0,0,0,9
9,0,0,0,0,9
9,0,0,0,0,9
9,0,0,0,0,9
9,0,0,0,0,9
9,0,0,0,0,9
9,9,9,9,9,9
↓表示(省略版)↓
これらを重ね合わせます。
ここで先ほどの「stage」の幅が少し大きい理由ですが、今回の作り方だと重ね合わせた時にブロックの種類によっては配列の端からはみ出てしまう(バッファオーバーフロー)ブロックが出てくるので、そのはみ出る分多めに配列の要素を確保したというワケです。
ブロックを表す「1~6」の左右が何もない「0」だったら移動させます。
ブロックを表す「1~6」の下が何もない「0」だったら落下させます。
ブロックを表す「1~6」の下が何もない「0」じゃなければ(壁・固定されたブロックだったら)ブロックを固定します。
横一列の何もない「0」の個数が0個だったら(ブロックで埋まっていたら)クリアします。
先に回転後の仮のブロックを作って、そのブロックと重なる部分が全て何もない「0」だったら回転させます。
こんな感じの計算を組み合わせてブロックパズルを作っていきます。
では次回はさっそくブロックと壁を表示するプログラムを組んでみましょう。
広告
↓発売日:2017年04月18日↓
Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで 新品価格 |
↓発売日:2016年06月25日↓
新品価格 |
↓発売日:2016年08月31日↓
新品価格 |
↓発売日:2018年11月21日↓
新品価格 |
↓発売日:2016年12月15日↓
新品価格 |
↓発売日:2016年09月28日↓
新品価格 |