Visual C# 2017 入門
36.メテオ6 タイトルとスコアの表示
今回は [ メテオ5 爆発演出とゲームオーバー ] の続きです。
この課題もこれで終わりです。
あと少しがんばりましょう。
タイトルを表示してみよう
タイトルを表示したいと思います。
前回、ゲームオーバーを表示しましたが、処理の内容はとても似ています。
まず、次のように変更してください。
変数 titleFlg を宣言します。Boolean タイプであることに注意です。
この変数が true(真)のときタイトル関係の処理が行われるようにします。
クリックで呼び出される pBase_Click の中で、titleFlg が true であるなら切り替える(表示を止める)しくみを作ります。
ゲームオーバーのときと同じです。
ただ、ここでは false (偽) にするだけでOKです。
msgcnt をここでクリアしているのは、ゲームオーバーのためです。
if ( msgcnt > 20 )
としている理由は、タイトルの表示時間を少しでも作るためです。
タイトル ⇒ ゲーム ⇒ ゲームオーバー ⇒ タイトル ⇒ ゲーム ⇒
という感じでループさせるつもりなので、
ゲームオーバーでクリックを連打すると、タイトルでもそのクリックを
受け付けてしまい、すぐにゲームが始まってしまいます。
そうならないようにクリックの無効時間を作るのです。
それから、初期処理 initGame の中で titleFlg を true にして
起動後にタイトルが表示されるようにします。
それでは、プログラムの続きです。
タイトル表示の画面は dispTitle の中で作ります。
ゲームオーバーの時と同じで、タイトル画面で必要な描画をすべて行います。
timer1_Tick の上にでも作ってください。
タイトル画像の表示は 117 行目で行っています。
timer1_Tick では、変数 titleFlg を使ってタイトル表示の切り替えをします。
こちらもゲームオーバーと同じですね。
(正確には爆発演出 playerExplosion と同じ)
実行してみましょう。
「CLICK ON THE SCREEN」は点滅します。
画面をクリックしてゲームが始まるか、確認しましょう。
スコアを表示しよう
スコアを表示するために変数 score を作ります。
そして、スコアを描画するためのフォントの設定を作ります。
名前は myFont とします。(好きな名前でかまいません)
これは、どのようなフォントタイプを使うのか
どのサイズで表示するのかを設定します。
初期処理 initGame では、変数 score の初期化をしましょう。
スコア(得点)は時間経過で増えていくようにします。
このゲームはシューティングではないので、隕石をよけているだけで
どんどん得点が入るようにします。
3行追加するだけです。(見た目は5行です)
timer1_Tick に score ++ を入れるだけで、隕石をよけている間は加算されます。
gg.DrawString は初めて使います。
これはグラフィックとして文字を表示するためのものです。
基本的に、表示する内容は文字列で指定します。
"SCORE: " + score.ToString()
変数 score を文字列に変換して、SCORE: という文字列と結合しています。
Brushes.White は文字の色です。
その次の 10, 10 は表示座標です。
なお、画像に収めるため2行に分けているので注意してください。
実行してみましょう。
ゲーム中、スコアは加算されますが、ゲームオーバーになると加算されません。
確認してみて下さい。
完成しました
これで完成です。お疲れさまでした。
ここまで説明を見ながら実行しているなら必要ないのかもしれませんが、全プログラムを載せておきます。
[ メテオゲーム 全プログラム ]
この課題では、画像を使ってゲームを作りました。
今回の手法を知っていれば、かなり見栄えの良いゲームが作れると思います。
Visual C# という1つの言語(開発環境も含め)だけで、
これだけのことができるなら、かなり良いものだと思います。
ただ、ゲームが作りやすい言語や開発環境は他に沢山あります。
少しでも気になったら調べてみて下さい。
もっとわくわくする気持ちが広がると思いますよ。
改造してみよう
これからプログラムを作る予定のない人向けの話です。
プログラムは作らないと覚えられないし、忘れてしまいます。
どんどんプログラミングしましょう。
何をすればいいか分からないのなら今回の課題を改造をしてみましょう。
・ハイスコア表示
・隕石の大きさをランダムにする
・隕石の大きさによって移動速度を変える
・得点アイテムを出現させる
・ビームを撃てるようにして、隕石を破壊できるようにする
また改造ではなく、新しくプロジェクトを作成して
横スクロールのゲームに変更するのも勉強になると思います。
右側から隕石を出現させて、左へ流れるようにします。
自機は自由に上下左右できるようにすれば、ゲームの雰囲気も変わります。
色々なことに挑戦してみて下さい。