確認問題
問題1:基本プログラムの確認
- 基本プログラムをダウンロードし、正常に動くことを確認しなさい。
- NKC_Common.hに宣言されているWINMODEの値がtrueの場合とfalseの場合の違いを説明しなさい。
- 現在の時間(パソコンが起動してから現在までの経過時間)はどこでどのように取得し、どの変数に格納されるか説明しなさい。
- キーの入力状況(押されているか押されていないか)はどのように取得し、どの変数に格納されるか説明しなさい。
- スタート画面で使用するテクスチャの変数名とファイル名を答えなさい。
- ゲーム画面で使用するテクスチャの変数名とファイル名を答えなさい。
- プログラム実行時、スタート画面からゲーム画面に移るにはどう操作すればよいか答えなさい。
- プログラム実行時、ゲーム画面からスタート画面に戻るにはどう操作すればよいか答えなさい。
- extern付きで宣言されている変数の意味を説明しなさい。
問題2:自キャラの制御
- 現在の移動スピードはいくつに設定されているか答えなさい。
- 移動スピードが4になるよう、プログラムを修正しなさい。
- 自キャラが移動できる範囲を答えなさい。
- 自キャラが移動できる範囲が(100,100)〜(540,380)になるよう、プログラムを修正しなさい。
- ゲーム開始時の自キャラの表示位置が画面中央になるよう、プログラムを修正しなさい。
問題3:敵キャラを出現させるための前準備
- 複数の敵キャラを出現させるプログラムを考える。NKC_Common.hに敵キャラ用のキャラクタ構造体を用意することにした。
以下の構造を持つキャラクタ構造体を作成せよ。
- 頂点情報配列
- 当たり判定用矩形
- X座標移動量
- Y座標移動量
- ライフ(0〜10の値を格納)
- タイプ(0〜10の値を格納)
タグ名は「_ENEMYSTATUS」とし、型は「ENEMYSTATUS」「*LPENEMYSTATUS」とする。
- 上記構造体を使って、ゲーム画面で敵キャラを1匹表示させるようプログラムを修正する。敵キャラ用構造体変数を宣言しなさい。
- 敵キャラ用のテクスチャを作成する処理を追加しなさい。テクスチャの変数名は「gl_TXEnemy」、ビットマップファイル名は「enemy.bmp」、透明色は「白」とする。
- 敵キャラの初期化を、以下の値で行いなさい。
- 表示位置(左上頂点の座標):(10,10)
- ポリゴンの大きさ:64×64
- 当たり判定:ポリゴンの大きさよりも、上下左右すべて4ピクセル縮める
- X方向移動量:2
- Y方向移動量:2
- ライフ(0〜10の値を格納):5
- タイプ(0〜10の値を格納):0
- ゲーム画面に敵キャラを表示するよう、プログラムを修正しなさい。lifeの値がDEADではないときに描画するようプログラムすること。
- ゲーム終了(ゲーム画面からスタート画面に戻る)時、敵キャラ用のテクスチャを開放するようプログラムを修正しなさい。
問題4:敵キャラ移動処理関数の組み込み
- 敵キャラの移動処理を行う関数を集めたソースファイル(Enemy.cpp)およびヘッダファイル(Enemy.h)を用意した。このファイルをプロジェクトに組み込みなさい。
- Enemy.hをインクルードすれば、Enemy.cppにある関数を利用できるようになる。Enemy.hをインクルードし、エラーがないことを確認しなさい。
- Enemy.cppにあるEnemyMove0〜4関数を使ったばあい、それぞれどのように敵キャラが移動するか、図を用いて説明しなさい。
問題5:敵キャラ移動処理の追加
- Enemy.cppにあるEnemyMove0()関数を使って、敵キャラが移動するようプログラムを修正しなさい。
- 敵キャラデータの初期化時、typeの値を0に指定している。この値を0〜4に変化させると、移動処理に使用される関数がEnemyMove0〜4に変わるよう、プログラムを修正しなさい。
- NKC_Public.cppに用意されているHitCheck()関数を使って、自キャラと敵キャラの当たり判定を行う。衝突したら、すぐにスタート画面に戻るよう、プログラムを修正しなさい。
- 衝突時、スタート画面に戻るのではなく、自キャラの位置を初期化時の位置に戻し、敵キャラを消す(lifeをDEADにする)よう、プログラムを修正しなさい。
- HitCheck()関数ではなく、HitCheck2()関数を使って、当たり判定用矩形を使った当たり判定処理を行うよう、プログラムを修正しなさい。
- NKC_Public.cppに用意されているHitCheckRect2()関数を使用し、敵キャラが自キャラに当たることなく画面の外に出てしまったら、表示されないようにlifeをDEADにするよう、プログラムを修正しなさい。