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

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

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

Processing 入門

18.ブロック崩し5 スコアとゲームオーバー

 

今回は「ブロック崩し4 ブロックとの当たり判定」の続きです。

当サイトの題材プログラムには、演出がほとんどありません。あっても点滅ぐらいです。
説明を簡単にするため、できるだけシンプルにしています。
ところで演出には2つの意味があります。
1つは見栄えを良くするため。
演出次第でプレイするモチベーションが上がったりします。
もう一つは、視線の誘導です。
ユーザーインターフェースだけでなく、ゲーム中でもアイテムなどに演出を付けることで
プレイヤーの目を向けさせる役目をしています。

 

 

ブロックを復活させよう

このゲームではステージというものがないので、すべてのブロックを消したとき
プレイヤーのできることがなくなります。
そうならないようにブロックを復活させます。

 

ブロックを復活させるプログラム

 

すべてのブロックが消されたか調べるために変数 bexist を作ります。
表示するブロックがあれば、この変数に1を立てます。( 119 行目)

自機と玉の当たり判定の所で bexist をチェックし0であれば
ブロックを復活させます。( 96-101 行目)

仕組みは簡単です。
しかし、なぜ自機と玉の当たり判定のところで復活させるか分かりますか?
想像してみて下さい。
すべてのブロックが消された瞬間に復活させたら、玉との当たり判定が行われて
その部分のブロックは消えてしまいます。
基本的には、ブロックと玉が一番離れたときが復活させても影響のない
タイミングなのです。

プログラムを変更したら実行して確認しましょう。

 

 

スコアを表示しよう

ゲームの部分は完成したので、スコアを表示させます。
変数 score を用意して、ブロックが消えるときに加算する仕組みを作ります。

 

スコアの表示をするための準備

 

ブロックが消えるときのスコア加算は 134 行目です。
上の2段はさらに 10 点足して得点2倍とします。( 136 行目)

104 行目でもスコアに1を加算しています。
これは得点というよりもブロックを復活させた回数を表示するためのものです。
昔のゲームではこのように1の位をクリア回数としていたものが多かったです。

 

 

このままでは表示されないので、表示するための関数を用意します。
関数はプログラムの一番最後に入れてください。

 

スコアを表示する関数

 

 

実行してみましょう。
ブロックをすべて消したとき1が加算されているか確認しましょう。

 

実行してスコアの表示を確認する

 

 

ゲームオーバーを表示しよう

ゲームオーバーの表示をしましょう。
以前作成した関数 gameOver を使います。
ここに表示関連の関数を入れ、「GAME OVER」の表示を行います。

 

ゲームオーバーの表示

 

玉が画面下へ出たときゲームオーバーとします。
変数 gseq に2を代入するだけです。( 92 行目)
ちなみに、91 行目はコメントにしておきます。
バグ(不具合)が発生したときテストで使いそうな仕組みは、コメントにして
残しておくと便利です。

 

 

変数 gseq を変えただけで済んだのは、すでに draw で切り替えるように
なっていたからです。

 

ゲームの流れを変える

 

実行して確認しましょう。

 

ゲームオーバーの表示