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

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

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

Processing 入門

13.みどりを救え5 (完) リトライ

 

今回は [ みどりを救え4 スコアとゲームオーバー ] の続きです。

「みどりを救え」ゲームも今回で終了です。
むずかしかったですか、それとも簡単でしたか?
この講座では「作成途中の段階を見せていこう」と思っています。
経験がなくても階段をのぼるように1段ずつ進めば、それなりに作っていけることを感じて欲しかったからです。

いつも遊んでいるようなゲームをいきなり作ろうと思っても「ぜんぜん分からない」と思います。 でも「ゲームの一部分」だけを切り取り、知っている方法で作っていくことはできるはずです。
初めから完全に再現する必要はなく、デフォルメしたものでいいんです。

やらないとスキルは身に付きません。
できることからコツコツと進めましょう。

 

 

ゲームの初期化を関数にしよう

今後のために、ゲームを初期化する関数 gameInit ( ) を作ります。

これまで初期化はすべて setup ( ) の中でしていました。
その中からゲームに関するものだけを gameInit ( ) の中に移動します。

 

ゲームの初期化を関数にする

 

これでリトライの処理も簡単にできます。

このタイミングで gameInit ( ) を作りましたが、私がゲームを作るとき
gameInit, gamePlay, gameOver
などは初めに作ってしまいます。
必ず使うものですから…

 

 

リトライの機能を入れよう

ゲームオーバー画面でマウスをクリックすると、リトライするようにします。

 

ゲームオーバー画面をクリックするとリトライする

関数 mousePressed ( ) はクリックしたときに呼ばれます。
setup ( ) や draw ( ) のように Processing で使い方が決められている関数です

ゲームオーバーの時だけリトライするように、変数 gseq をみて判断します。(116行目)

 

 

実行してみましょう。
ゲームオーバー画面でクリックして、リトライすることを確認してください。

ゲームオーバー画面のクリックでリトライするか確認する

 

 

リトライの表示をしよう

ここでクリックすればリトライできることをメッセージで知らせます。
「Click to retry!」
こんな感じです。

ただ表示するだけでなく、点滅させます。
注目させたいときによく使う方法です。
拡縮させたりするのも良い手です。

 

リトライのメッセージを表示する

点滅させるために変数 mcnt を用意しました。
そして1フレームごとに加算します。(107行目)
108行目を見てください。
( mcnt % 60 )
これは % を使って割った余りを算出しています。
この計算の余りは 0 から 59 まで、です。
これに条件式で 40 より少ないか判定しています。
つまり 40 より小さいときにメッセージを表示して
40 以上のときは表示しません。

ちなみにパーセントは5のキーあたりにあります。
シフトキーを押しながら入力します。

パーセントのキー

 

それでは実行させましょう。
メッセージが点滅したらOKです。

メッセージが点滅する

 

 

全ソースコード

みどりを救えゲーム ソースコード ]

 

 

改造しよう

「みどりを救えゲーム」はこれで完成です。
お疲れさまでした。
演出を入れたり、もっと体裁を作ろうとするとすごいボリュームになるので
今回はしませんでした。
この Processing 入門の、初めてのゲームなのでこんな感じかと。

さて、プログラミングできるようになるかはここからが大切です。
他人の作ったプログラムを入力しているだけでは身に付きません
自分で考えることが必要なんです。
だから、どんどんプログラミングしましょう。

 

つぎの予定がなければ、今回のプログラムを改造してみてはどうでしょうか。
ちょっと例を考えてみました。

・リトライメッセージを点滅させずに、色が変わるようにする
・「GAME OVER」表示を拡縮させる
・タイトル表示を入れる(ゲームオーバー画面と同じ仕組みで)
・スコアが増えたら、落下速度を少し上げる
・違う色の四角を落下させる(HP回復などの特性を持たせる)

改造の案を自分で考えるのも楽しいです。
チャレンジしてみて下さい。

 

なお、改造するときはプログラムの名前を別にして(保存して)
行うのがいいかもしれません。
プログラムを改造したらバグ(不具合)が発生して、もとに戻せなくなった…
などよくあることなので。