広告
広告
↓発売日:2017年04月04日↓
Java 第2版 入門編 ゼロからはじめるプログラミング (プログラミング学習シリーズ) 新品価格 |
ブロック崩しを作るポイントを挙げるとすると
・ボールの移動
・壁との当たり判定
・跳ね返りの角度計算
・自機バーの移動
・自機バーとの当たり判定
・ブロックの表示
・ブロックとの当たり判定
こんなトコロではないでしょうか?
主なところを見ていきましょう!
ブロック崩しの肝の部分ですね!
これができれば8割完成したようなモノです。
まず移動角度と跳ね返り角度の計算ですが、これには入射角が何度で跳ね返りの角度は対称になるから・・・。
なんて事を考えるとけっこうハマるのでそんな事は考えません。
ここは「x」と「y」の増加のみで考えます。
しかも基本の増加量は同じで「x」と「y」の増える方向を変えるだけですべての方向にボールを飛ばします!
広告
では試しに「x」と「y」を同じずつ増やしてみましょう。
「x」が「0」なら「y」も「0」
「x」が「1」なら「y」も「1」
「x」が「2」なら「y」も「2」
「x」が「3」なら「y」も「3」
といった具合です。
そしてそこに点を打っていくと
こんな感じになりますよね。
これはどこからはじめても同じような結果になるので下の方から点を打ち始めると
こんな感じになります。
この時に決して
「原点をずれる直線はy = ax + bだからあ・・・。」
なんて中途半端な数学の知識を考えてはいけません。
単純にその時のボールの座標から同じように「x」と「y」を増加(減少)していったらどんな動きになるのかと考えます。
なので途中で「x」だけを減少させれば
折り返しができました!
これだけであんな複雑に跳ね返ってくれるのかと気になるトコロですがこれが以外にそれっぽくなるのでご安心ください。
もちろんブロックの角に当たった場合やバーを動かしながら跳ね返した場合などを正確にやりたい場合はもっと工夫が必要ですが今回はこの「x」「y」の増減のみで跳ね返しをしたいと思います。
壁や自機バーの当たり判定はその壁の座標を超えた場合だけさきほどの「x」または「y」の増減の向きを変えればいいので簡単そうですが、大量にあるブロックそれぞれの当たり判定はどうするのかと気になるトコロだと思います。
これにはあらかじめブロックを配置できる場所をマス目として決めておいて
そしてそれぞれにブロックがあるかどうかのフラグを付けてボールが移動するたびにまだ残っているブロックの判定も「for」ループなどで一巡させます。
ブロックの表示には当たり判定で使ったフラグをそのまま利用します。
同じように「for」ループを使ってブロックフラグがオンの位置にブロックを描いていきます。
では次回は実際にプログラムを組んでいきましょう!
広告
↓発売日:2017年04月18日↓
Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで 新品価格 |
↓発売日:2016年06月25日↓
新品価格 |
↓発売日:2016年08月31日↓
新品価格 |
↓発売日:2018年11月21日↓
新品価格 |
↓発売日:2016年12月15日↓
新品価格 |
↓発売日:2016年09月28日↓
新品価格 |