第4章:ハイスコアを表示する(その1)

こんにちは、MSLABOです。

前回はファイルから最高得点を読み取り、現在の得点と比較して、超えていたら最高得点を記録する処理を組み込みました。
しかし、このままではゲームプレイヤーが最高得点を更新できた事がわかりませんよね。こっそりと最高得点を記録し続ける(笑)というのでは、あまり意味がありません。

そこで今回から、最高得点を更新した場合それをどのようにゲームプレイヤーに伝えるのかについて考えてみたいと思います。

4.28 ゲームオーバー画面を再デザインする
ゲームオーバーになったら、ゲームオーバー画面を表示します。その際、最高得点を画面に表示するのが、一番シンプルですね。

そこでゲームオーバー時に、以下の様な表示を行う画面を作ってみたいと思います。

gameOver
青枠で囲った場所に注目してください。これまで作成したゲームオーバー画面に、得点表示を追加しています。

動作は、以下のようになります。
1)前回の最高得点を「最高得点 :nnn」として表示する。
2)その下に、今回の得点を「今回の得点:nnn」として表示する
3)もしも今回の得点>前回の最高得点なら、「記録更新」と目立つように表示する

より詳細な画面デザインは、以下になります(クリックすると、拡大します)。
gameOver2「最高得点 :nnn」と表示する最初の文字列ですが、画面上端から224ピクセルの場所とします。横位置は「最高得点 :nnn」という文字列が、ちょうど画面の中央にくるように工夫する事にしましょう。

具体的には、それぞれの文字や絵を表示する箇所で説明しますが、文字の書き出し原点と画像の書き出し原点が異なる事に注意してください。
初期状態では、文字の原点は字の左下、画像の原点は絵の左上になります。
genten

4.29 ゲームオーバー処理を少し改造する
これまでの説明で、ゲーム中にボールを画面外に落としてしまった場合、ゲーム状態変数をゲームオーバーに変更し、現在の得点を記録する処理について説明しました。

思い出していただくために再掲載しておくと、以下の様な処理でした(「第4章:ハイスコアを記録する(その5)」記事より)。

ここで前回の得点を読み込んでいるiBefourScore変数を、ローカル変数からグローバル変数に変更します。

その理由は、ゲーム状態変数がゲームオーバーの場合に draw関数から実行するゲームオーバー処理に、今回の最高得点を表示する部分を追加し、その中でも前回の得点(iBefoueScore)と現在の得点(iRefCount)を比較したい為です。

ですので、ボール移動関数(moveBall)からiBefourScore変数の定義を削除し、プログラムの先頭に以下のように定義します。

また draw関数に追加する最高得点表示処理は、ひとまとまりの関数として定義しましょう。

こんな感じですね。
そして、この最高得点表示関数(dispHighScore)を、先ほどのdraw()関数から呼び出します。

 

《次回の予定》
今回はここまでとします。次回は「記録更新」と表示する画像を準備し、最高得点表示関数(dispHighScore)の中身を作っていきたいと思います。


《覚えたこと》
最高得点をゲームプレーヤーに伝える方法
文字原点と画像原点の違い

《覚えた関数》
今回は無し

次章:
第4章:ハイスコアを表示する(その2) へ進む

前章:
第4章:ハイスコアを記録する(その5) へ戻る

目次:
目次 へ戻る


◆よりプログラミングを楽しみたい方、プログラム作成のお供に:
PROCESSING逆引きリファレンス


★お知らせ★
よりわかり易く読みやすい記事を目指して「PROCESSINGで始めるゲーム作りとコンピュータ」の記事を改定しています。

改定版の記事は以下から閲覧できます。よろしければ、どうぞ。

(改定版)PROCESSINGで始めるゲーム作りとコンピュータ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)