本日の内容
前回作成したプログラムを発展させ,衝突判定をするゲームを作ろう(その1).
- 演習9.1: ウィンドウ枠との衝突判定
- 課題9.1: 敵との衝突判定
各課題に取り組む手順
- まず自力でプログラムを書いてみる. 間違っていても構わない.教科書やWeb上のリファレンスを見ても構わない.
- ひととおり入力を終えたら,ビルドする前にソースをレポートに貼り付けておく.
- ビルドする.ビルドエラーをレポートに貼り付けておく.
- エラーを取り除き,正しく動作するプログラムを作成する.
- 自力で考えた限界のソースコードをレポートに貼り付けておく.
- 友人と相談した場合,誰と相談したか,また,相談した結果気がついた間違いをレポートに記述する.
- 完成版のソースコード,および,非衝突時と衝突時の両方の実行結果の画像をレポートに貼り付ける.
演習9.1 ウィンドウ枠との衝突判定
演習8.2で作成したプログラムに衝突判定を導入し,プレーヤがウィンドウ枠に衝突している間は,背景を黒から白に変更するようにする.
- プレーヤが衝突しているかどうかを表すグローバル変数isCrushingFrameおよびposPlayer,distanceを用意する.

- プレーヤと枠が衝突しているかどうかは,プレーヤが移動する度に判定する必要がある。したがって、 updatePos()内に次の判定コードを追加する。
- プレーヤの位置を格納する変数がposPlayer[]でない場合は適切に変更すること。
- ここでは、posCirの値をposPlayerへ代入している
- 接触判定の範囲(閾値)を変更してみる。

- 衝突時の背景の色を指定するため、display()内に次の判定コードを追加する。

- プログラムを実行させ、プレーヤー図形を矢印キーで操作して、動作を確かめる。
- 演習9.1の枠とは、ウィンドウの外枠のこと。
- また、実行時の動作を説明動画でも確認する。

課題9.1 敵との衝突判定
演習9.1に以下を実現するソースコードを追加する。
・プレーヤー図形が敵図形と衝突している間は、背景を水色にする。
・プレーヤー図形がウィンドウ枠と接触している間は、背景を白くする。(演習9.1のまま)
・プレーヤー図形と敵図形との衝突判定は、以下の基本的な考え方を参考にする。
・衝突判定では、プレーヤー図形と敵図形間の距離dを算出する。
・算出した距離dが閾値D以下なら背景の色が変わるようにする。(今回は水色に)
・敵との接触状態を表すグローバル変数 int isCrushingEnemy = 0; を追加する。
基本的な考え方:

課題9.2 敵図形を顔に変更する(応用)
課題9.1を改造し、敵の図形を自作の顔(課題6.2で作成)に変更する.ただし、演習9.1や課題9.1と同様に、
プレーヤーがウィンドウ枠に接触したときとプレーヤーが敵と衝突したときは、背景色を変化させる。
レポート
- 提出先・期限
- https://www.kagoshima-u.ac.jp/manaba/の「プログラミング言語I及び演習」のレポートより提出
- 演習当日の23:55まで
- 内容
- Microsoft Wordを用いてレポートを作成すること.
下記について記述すること.
- 演習9.1 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,枠に非衝突時と衝突時の両方の実行結果の画像)
- 課題9.1 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,敵に非衝突時と衝突時の両方の実行結果の画像)
- 課題9.2 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,敵に非衝突時と衝突時の両方の実行結果の画像)
- 結論 (今回の演習を通じて学んだことについて客観的かつ具体的に述べる.)
- 所感 (感想や意見などを自由に書いてよい.)
- 提出ファイル
- Wordファイルにソースコードやキャプチャした実行画面などを貼り付けてmanabaのレポートから提出すること.
- (*.cファイルを送る必要はありません。)
- テンプレート等(Word)
- Word表紙 (回数やタイトルなどを適宜修正して使うこと.)