| Javaゲーム3作目は、ブロック崩しを作ってみました。ご存知とは思いますが、落ちてくるボールをラケットで跳ね返して、ブロックに当てて崩していくゲームです(こんなやつ↓)。
ブロック崩しで遊んでみる場合はこちらです⇒ブロック崩し
上の画像が表示されて全然動かない場合は、ブラウザがJavaに対応していない可能性があります。ウイルス対策ソフトやセキュリティの設定で開けない場合は、Javaのコンテンツを許可すれば見れると思います。
画像がグレーになって動かない場合は、Javaのバージョンが古い可能性があります。その場合、「java.com」から、最新バージョンのものをダウンロード、インストールすれば見ることができます。
Javaでは、円や長方形などは、画像を準備しなくてもプログラムで描くことができます。表示する場所は、画像と同様に座標で指定できます。
ブロック崩しでは、ボール、ラケット、ブロックを描く必要がありますが、ボールは円、ラケットとブロックは長方形なので、全てプログラムで描きました。もちろん自分で準備した画像を使いたければ使うこともできます。
ラケットは、マウスの動きについてくるようにする必要があります。Javaでは、マウスを動うごかしたときのカーソルの位置の座標を取得できますので、カーソルが動くたびにその座標を取得して、その位置にラケットを表示しなおすことで、マウスの動きについてくるようにすることができます。
ブロックは、あらかじめ数や位置(座標)を指定しておいて、ブロックが壊れたかどうかを表すフラグの配列を準備し、初期値は全て「1」しておきます。そして、ボールがブロックに当たったら、そのブロックのフラグを「0」にし、まだ壊れていないブロックだけを再表示するようにしています。
ボールは、最初は斜め下に落ちてくるように表示座標を変えていき、ラケット、壁、ブロックがある位置にきたら、跳ね返って動く向きが変わるようにしています。今回は、
・斜めに落ちてきたボールをラケットの真ん中に当てると斜めに跳ね返る。
・斜めに落ちてきたボールをラケットの端に当てると真上に跳ね返る。
・真下に落ちてきたボールをラケットの真ん中に当てると真上に跳ね返る。
・真下に落ちてきたボールをラケットの端に当てると斜めに跳ね返る。
という仕様にしました。また、ブロックは最初30個あり、ブロックを1つ壊すとスコアが1点加算されます。30個全てのブロックを壊すと、レベルアップして再度ブロックが30個現れるようにしています。レベルアップすると、ボールの動きが少し速くなるようにしたんですが、実際にやってみるとあんまり変わらないように感じました(--;)
ボールの速さを変える処理は、ボールを1度ある場所に表示させてから、次の場所に表示させるまでのインターバルを短くすることで行っています。
失敗できるのは2回までで、3回失敗するとゲームオーバーです。ただし、レベルアップすると、失敗できる数が1回増えます(最大で5まで)。
レベル10(スコア300点)までいくと、ゲームクリアです。
プログラムは300行くらいで、1日1、2時間の作業で10日くらいかかりました。一通り作るのは3、4日でできましたが、細かい動きが思い通りにいかず、調整にかなり時間がかかりました(><)
今回のゲームを作ることで、マウスに合わせて画像が動くようにする処理や、条件によってパラメータを変える処理を覚えることができました。
次は、最初に作ってみようかと思ったけど意外と難しそうで後回しにしていた、オセロゲームに挑戦したいと思います。 |