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

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

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

Processing 入門

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

 

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

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

 

 

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

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

 

リトライメッセージを表示させる

 

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

 

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

 

メッセージを点滅させる

 

 

リトライの機能を作ろう

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

 

マウスクリックで呼ばれる関数を使う

 

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

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

 

ところでリトライのメッセージ表示と、クリック入力の部分を分けて
説明したのには理由があります。
プログラミングする順番を少し意識してもらう為です。
初心者のとき、一度に沢山のプログラムをしようとすると、上手くいかないときが
あります。
問題が発生しても、どこに問題があるのか分からなくなるからです。
これは私のおすすめなのですが「まず見える部分から作る」という方法が
いい感じです。
例えば、敵の出てくるアクションゲームなどでは
1.敵を表示する
2.敵を動かす
3.敵から弾を発射させる
4.敵とプレイヤーの当たり判定をする
こんな感じで、見せるところから始めて、1つずつ機能を追加していけば
問題が発生しても分かり易くなります。

 

 

スタート待ちを作ろう

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

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

 

ゲームスタート待ちを入れる

 

初めに作っておいた関数 gameTitle にゲームオーバーのときと同じように
表示系の処理を入れます。
1つ違う点は、playerMove を入れることです。
ゲームオーバーのときと違い、ゲームを始める前にプレイヤーに操作感を
体験してもらうために入れます。

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

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

 

return で命令を抜ける

 

 

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

 

スタート待ちメッセージを表示する

 

 

全ソースコード

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

 

改造しよう

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

 

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

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

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