今回の内容
- 第9回で作成したプログラムを発展させ,鬼ごっこゲームを作ろう
- 演習11.1: スコアの表示と加点処理
- 課題11.1: スコアの減点処理
- 課題11.2: 一定スコア到達時のテキスト表示
各課題に取り組む手順
- まず自力でプログラムを書いてみる. 間違っていても構わない.教科書やWeb上のリファレンスを見ても構わない.
- ひととおり入力を終えたら,ビルドする前にソースをレポートに貼り付けておく.
- ビルドする.ビルドエラーをレポートに貼り付けておく.
- エラーを取り除き,正しく動作するプログラムを作成する.
- 自力で考えた限界のソースコードをレポートに貼り付けておく.
- 友人と相談した場合,誰と相談したか,また,相談した結果気がついた間違いをレポートに記述する.
- 完成版のソースコード,および,実行結果の画像をレポートに貼り付ける.
演習11.1 スコアの表示と減点処理
演習9.1に以下を追加して、ウィンドウ左下にスコアを表示させよ.
ただし、スコアの初期値は100で、時間経過とともに1ずつ減少する.

- sprintfエラーを回避するため、インクルード直後に「#pragma warning (disable: 4996)」を追加する(あるいは「デバッグ」→「○○のプロパティ」→「C/C++」→「SDLチェック」を「いいえ」にする)


- display()内にスコア表示用変数と文字表示用のGLUTコードを追加する。
- スコアを表示(下の黄色の部分)は、glutSwapBuffers(); の直前に挿入する。


- updatePos()内の接触判定の後にscoreを減点するコードを追加する。


演習11.2 衝突時のスコア減点
演習11.1では、時間の経過とともに、scoreが減点していたが、敵に衝突している間のみ,スコアが10点ずつ減点されるように変更せよ.ただし、以下を満足すること.
- 敵がプレーヤーと衝突しているときは、スコアは減点される。
- 敵がウィンドウ枠に衝突しているときは、スコアは減点されない。
- 敵とウィンドウ枠の両方に接触しているときは、スコアは減点される。
- スコアが0以下になったら、scoreが表示されている場所にスコアの代わりに"Game Over"と表示させる。
- "Game Over"と表示されても、敵は移動し続ける。(敵の移動を停止させるのは課題11.1で行う)

- スコアが0以下かどうかの状態判定用の変数の追加
- スコアが0以下のときは"Game Over"とするためのフラグを追加する

scoreが0以上の時:flag_gameover = 0
scoreが0より小さくなった時:flag_gameover = 1
となるようにする
- 演習11.2に書かれていないソースコードも追加しないと、実行結果が以下のようにはなりません。

課題11.1
演習11.2を修正して、スコアが0以下になったら、ひし形の軌道を動いている白の図形の動きが停止するようにソースコードを修正せよ。
課題11.2 (応用)
課題11.1の動いている図形を白の点から、顔の図形(drawFace())に変更せよ。
レポート
- 提出先・期限
- https://www.kagoshima-u.ac.jp/manaba/の「プログラミング言語I及び演習」のレポートより提出
- 演習当日の23:55まで
- 内容
- Microsoft Wordを用いてレポートを作成すること.
下記について記述すること.
- 演習11.1 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,実行結果)
- 演習11.2 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,実行結果)
- 課題11.1 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,実行結果)
- 課題11.2 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,実行結果(異なるメッセージが表示されている画面))
- 結論(今回の演習を通じて学んだことについて客観的かつ具体的に述べる.)
- 所感(感想や意見などを自由に書いてよい.)
- 提出ファイル
- Wordファイルにソースコードやキャプチャした実行画面などを貼り付けてmanabaのレポートから提出すること.
- (*.cファイルを送る必要はありません。)
- テンプレート等(Word)
- Word表紙 (回数やタイトルなどを適宜修正して使うこと.)