画像(logo)

HOME/[JAVA言語]ブロックパズルの作り方 目次/初日 ブロックパズルの考え方

[JAVA言語 ブロックパズルの作り方]
初日 ブロックパズルの考え方

広告

↓2017年04月19日発売↓

カラー図解 Javaで始めるプログラミング 知識ゼロからの定番言語「超」入門 (ブルーバックス)

新品価格
¥1,080から
(2017/5/1 13:45時点)

目次へ戻る

ブロックパズルの考え方

初日の今回はブロックパズル作りの大まかな流れだけを説明したいと思います!

まずはこちらの画像をご覧ください。

画像(jb_1_1)

こんな感じのブロックパズルの中身をのぞいて見ると・・・。

画像(jb_1_2)

こんな感じになっていたりします!

びっくりですね!

だいぶ見づらいですが、壁が「9」、ブロックが「1」、空間が「0」に置きかわってます!

この数字を使って計算する事でブロックパズル全体の動きを表現します。

もう少し詳しく見てみましょう!

2次元配列を平面にする

2次元配列を平面のようにとらえて数字を当てはめていきます。

ブロック・・・int block[][] = new int[4][4]

ブロック情報を保存します。

ステージ・・・int stage[][] = new int[23][18]

固まったブロックなど途中の状態を保存します。

※ステージの幅がさきほどの画像より少し大きいのは後ほど説明いたします!

広告

数字を当てはめる

それぞれの役わりに数字を当てはめていきます。

「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

↓表示↓

画像(jb_1_3)

ステージ(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

↓表示(省略版)↓

画像(jb_1_4)

これらを重ね合わせます。

画像(jb_1_5)

ここで先ほどの「stage」の幅が少し大きい理由ですが、今回の作り方だと重ね合わせた時にブロックの種類によっては配列の端からはみ出てしまう(バッファオーバーフロー)ブロックが出てくるので、そのはみ出る分多めに配列の要素を確保したというワケです。

「移動、落下、固定、クリア、回転」の計算

移動

ブロックを表す「1〜6」の左右が何もない「0」だったら移動させます。

落下

ブロックを表す「1〜6」の下が何もない「0」だったら落下させます。

固定

ブロックを表す「1〜6」の下が何もない「0」じゃなければ(壁・固定されたブロックだったら)ブロックを固定します。

クリア

横一列の何もない「0」の個数が0個だったら(ブロックで埋まっていたら)クリアします。

回転

先に回転後の仮のブロックを作って、そのブロックと重なる部分が全て何もない「0」だったら回転させます。

こんな感じの計算を組み合わせてブロックパズルを作っていきます。

では次回はさっそくブロックと壁を表示するプログラムを組んでみましょう。

次回

二日目 背景とブロックと壁を表示

□ページの先頭へ□

□目次へ戻る□

□HOME□

広告

↓2016年06月25日発売↓

新・明解Java入門 (明解シリーズ)

新品価格
¥2,916から
(2017/5/1 13:47時点)

↓2017年04月18日発売↓

Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで

新品価格
¥3,218から
(2017/5/1 13:50時点)

↓2017年05月17日発売↓

新・明解 Javaで学ぶアルゴリズムとデータ構造 (明解シリーズ)

新品価格
¥2,592から
(2017/5/1 13:54時点)

↓2017年04月04日発売↓

Java 第2版 入門編 ゼロからはじめるプログラミング (プログラミング学習シリーズ)

新品価格
¥2,030から
(2017/5/1 13:55時点)