初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

Processing 入門

19.ブロック崩し6(完)リトライ

 

今回は「ブロック崩し5 スコアとゲームオーバー」の続きです。

ブロック崩しも今回で終了です。
あと少しです、頑張りましょう。

 

 

リトライのメッセージを表示しよう

ゲームオーバーの表示ができたので、次はリトライの機能を入れましょう。
まずメッセージを表示する部分を作ります。
メッセージを点滅させる処理は、以前にもやりましたね。

 

リトライの表示を行う

変数 mcnt の 60 で割った余りを使って点滅させます。
余りを出す計算には を使います。( 69 行目)
余りの数が 40 より小さいとき表示して、それ以外のとき非表示となります。

 

それでは実行してみましょう。

リトライの表示が点滅する

 

 

リトライの機能を作ろう

前回のゲームでもリトライを作ったので覚えているかもしれませんね。
ほぼ同じ内容になります。
Processing で用意されている関数 mousePressed を使います。
これはマウスをクリックしたときに呼ばれる関数です。
この関数をプログラムの最後に追加します。

 

リトライのクリックを受け付ける

 

変数 gseq はゲームオーバーのとき2が入ってます
このときクリックされたら初期化をするだけで、リトライできます。

変数を宣言した後、gameInit の中にゲーム開始に必要な初期化を
用意しておくだけで、簡単にリトライができるようになります。
実行してリトライできているか確認してみましょう。

 

ところでリトライのメッセージ表示と、クリック入力の部分を分けて
説明したのには理由があります。
プログラミングする順番を少し意識してもらう為です。

初心者のとき、一度に沢山のプログラムをしようとすると、上手くいかないときがあります。
問題が発生しても、どこに問題があるのか分からなくなるからです。
これは私のおすすめなのですが「まず見える部分から作る」という方法がいい感じです。

例えば、敵の出てくるアクションゲームなどでは
1.敵を表示する
2.敵を動かす
3.敵から弾を発射させる
4.敵とプレイヤーの当たり判定をする
このように見せるところから始めて、1つずつ機能を追加していけば
問題が発生しても解決し易くなります。

 

 

スタート待ちを作ろう

ゲームとしての形は、ほぼできました。
まだ足りないとすればタイトルが無いことです。
しかし、今回はタイトルを入れません。面倒なので…

ただこのままでは、起動したらすぐに玉が飛んできてゲームが始まってしまいます。
これをスタート待ちのメッセージを表示して、クリックしたらゲーム開始という流れにします。

 

スタートのクリックを受け付ける

初めに作っておいた関数 gameTitle にゲームオーバーのときと同じように表示系の処理を入れます。

1つ違う点は、playerMove を入れることです。
ゲームオーバーのと違い、ゲームを始める前にプレイヤーに操作感を体験してもらうために入れます。

マウスをクリックしたときの処理も入れます。( 177-179 行目)
ここは変数 gseq を0から1にするだけでOKです。

 

ここで1つ注意です。
スタート待ち( 177-179 行目)とリトライ待ち( 180-182 行目)の場所を
入れ替えると正しく動かなくなります。
リトライ待ちを先にすると、gameInit の中に gseq = 0 があるため
スタート待ちの条件文にも引っ掛かってしまいます。
このような順番を気にしたくないなら return 命令を使って関数を抜けてしまうのも1つの方法です。
例えば次のようになります。

 

必要な処理が終わればreturnで抜ける

 

それでは実行してスタート待ちができているか確認しましょう。
このときプレイヤー操作もできるか確認してください。

必要な処理が終わればreturnで抜ける

 

 

全ソースコード

ブロック崩し ソースコード ]

 

 

改造しよう

「ブロック崩し」はこれで完成です。
お疲れさまでした。
出来上がったプログラムを見ると、少し行数が多いかなと思いました。
似たような処理が多かったですね。
こんなときは関数でまとめたりすることもできたのですが
行数を少なくすることよりも、シンプルさを取りました。

 

さて毎回、同じことを言いますがプログラミングは続けないと身に付きません。
新しい課題を見つけるか、今回の課題を改造してみてください。
改造には次のような例があります。

・ハイスコアの表示を行う
・ブロックを小さくして、総数を多くする
・タイトルを表示する
・玉を逃すミスを3回までOKにする
・玉の跳ね返りにランダムの要素を入れる

などなど、挑戦してみてください。
改造のアイデアが出ない場合には、他のブロック崩しからヒントをもらって
組み込んでみるのもいいかもしれません。