Processing 入門
18.ブロック崩し5 スコアとゲームオーバー
今回は「ブロック崩し4 ブロックとの当たり判定」の続きです。
題材のプログラムには、演出がほとんどありません。あっても点滅ぐらいです。
説明を簡単にするため、できるだけシンプルにしています。
ところで演出には2つの意味があります。
一つは見栄えを良くするため。
演出次第でプレイのモチベーションが上がったりします。
もう一つは、視線の誘導です。
ユーザーインターフェースだけでなく、アイテムなどに演出を付けることで
プレイヤーの目を向けさせる役目をしています。
ブロックを復活させよう
このゲームではステージというものがないので、すべてのブロックを消したときプレイヤーのできることがなくなります。
そうならないようにブロックを復活させます。
すべてのブロックが消えたか調べるために変数 bexist を作ります。
表示するブロックがあれば、この変数に1を立てます。( 112 行目)
自機と玉の当たり判定で bexist をチェックし0であれば
ブロックを復活させます。( 93-98 行目)
仕組みは簡単です。
しかし、なぜ自機と玉の当たり判定のところで復活させるか分かりますか?
想像してみて下さい。
すべてのブロックが消えたとき復活したら、玉との当たり判定が行われて
その部分のブロックは消えてしまいます。
基本的には、ブロックと玉が一番離れたときが復活させても影響のない
タイミングなのです。
プログラムを変更したら実行して確認しましょう。
スコアを表示しよう
ゲームの部分は完成しました。これからスコアを表示させます。
変数 score を用意して、ブロックが消えるとき加算します。
まずは加算の処理を作ります。
ブロックが消えたときの加算は 127 行目です。
上の2段のときは、さらに 10 点足して得点2倍とします。( 129 行目)
100 行目でもスコアに1を加算しています。
これは得点というよりもブロックを復活させた回数を表示するためのものです。
昔のゲームではこのように1の位をクリア回数としていたものが多かったです。
表示するための関数を用意します。
関数はプログラムの一番最後に追加してください。
実行してみましょう。
ブロックをすべて消したとき1が加算されているか確認しましょう。
ゲームオーバーを表示しよう
ゲームオーバーの表示をしましょう。
はじめに作成した関数 gameOver を使います。
ここに表示関連の関数を入れ、「GAME OVER」の表示を行います。
玉が画面下へ出たときゲームオーバーとします。
変数 gseq に2を代入するだけです。( 90 行目)
ちなみに、89 行目はコメントにしておきます。
バグ(不具合)が発生したときテストで使いそうな部分は、コメントにして残しておくと便利です。
なお、変数 gseq を変えただけでゲームオーバー処理になるのは、draw( ) で切り替える仕組みが出来ているからです。
実行して確認しましょう。