| 授業計画 | 
		
			| 回数 | 学習目標 | 学習項目 | 
		
			| 1 | 本科目で学習する内容を理解出来る。
クラスの概念を説明できる。 | ガイダンスを行い、本科目の目標と学習内容を認識する。
ゲームプログラミングIで作成したプログラムについて、構造体で表現していたオブジェクトをクラスに書き換える。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 2 | ジャンプするプレイヤーを作成できる。 | キー入力に応じてプレイヤーが上昇し、重力加速の影響を受けて落下、着地するプログラムを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 3 | タイルマップを描画し、タイルマップ上を移動するプレイヤーを作成できる。 | 二次元配列を利用してタイルマップを表示し、タイルにめり込まないようにプレイヤーを移動させるプログラムを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 4 | ファイル分割、関数へのアドレス渡しを活用できる。 | プレイヤー、タイルマップのクラスをそれぞれのh/cppファイルで宣言、実装し、アドレス渡しを用いてインスタンスの受け渡しを行うプログラムを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 5 | タイルマップ上を往復する敵を作成できる。
敵を倒す挙動を作成できる。 | タイルマップの端、または壁に到達したときに進行方向を反転する敵を作成できる。
プレイヤーに攻撃動作を入れ、攻撃判定と敵が衝突した際に敵を倒すプログラムを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 6 | 円運動する敵を作成できる。
波の運動をする敵を作成できる。
壁に衝突すると正反射する敵を作成できる。 | 円運動、波の運動などの移動パターンを記述し、指定したパターンで運動を行う敵クラスを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 7 | カメラの概念を説明できる。 | プレイヤーに追従しつつ、画面外の領域を映すことがないよう移動制限をかけたカメラクラスを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 8 | ファイルに記述したマップデータからゲーム内でマップを構築できる。 | 外部ファイルを読み込み、その内容からタイルマップを構築するプログラムを作成する。
タイルの幅と高さは可変とし、タイルマップデータの読み込みには動的なメモリ確保を活用する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 9 | ファイルに記述した敵の配置データをもとに、ゲーム内で敵を生成できる。 | マップデータに敵の配置データを追記し、その内容から敵を生成するプログラムを作成する。
敵の生成、更新、描画を取りまとめる敵マネージャを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 10 | これまでの学習内容の定着を図る。 | 中間試験を行う。また、振り返りを通して学習の定着を図る。 | 
		
			| 【理解度確認】中間試験の結果にて確認。 | 
		
			| 11 | 行動ルールの仕組みを説明できる。 | 条件付けと優先度からなる行動ルールに従って動く敵のプログラムを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 12 | イベント駆動の概念を説明できる。 | 関数オブジェクトを利用して衝突時に発火するイベントを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 13 | 双方向リストの特徴を説明できる。 | 敵マネージャ内部のデータ構造を配列からリストに書き換えたプログラムを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 14 | 連想配列の特徴を説明できる。 | ゲーム設定ファイルを作成し、内容を連想配列に記録するプログラムを記述する。
ゲーム設定ファイルの内容(プレイヤーの初期体力、攻撃力、無敵のON/OFFなど)を反映したプログラムを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 | 
		
			| 15 | クラスの継承を説明できる。 | これまで作成したクラスのいくつかについて汎化を行い、親-子の二階層の継承関係を持つプログラムを作成する。 | 
		
			| 【理解度確認】提出課題にて確認。 |