渡したゲームと似たようなものを作れ。
ただし、先輩に聞く、講師に聞く、どこかのサイトからコードをコピペするなど、あらゆる手を使っても構わない。
シングルトンにするべきか、グローバル変数にするべきか、vectorを使うべきか、ポインタを持つべきか、pointクラスを使うべきか、コンポジションを使うべきか、妥当性と、わかりやすさをしっかり考えて選択すること。
今回は練習として、GameManagerクラスが他のクラスを持つ形にせよ。
この課題を出した者のみが、私のC++講座後半を受けることができる。
これまでの講座を受講してきた諸君なら、必ず解けるはずだ。
では、また会える日を、楽しみにしている。
このプログラムを作るにあたって、私は以下の様なクラスの構成にした。
GameManagerクラス(シングルトン。他のクラスを所持し、管理する)
|- Playerクラス
|- PlayerBulletManagerクラス(PlayerBulletクラスのvectorを所持)
|- EnemyManagerクラス(Enemyクラスのvectorを所持)
|- EnemyBulletManagerクラス(EnemyBulletクラスのvectorを所持)
|- EffectManagerクラス(Effectクラスのvectorを所持)
|- ScoreManagerクラス(スコアを管理するクラス)
・以下はGameManagerクラスとは別に、シングルトンで作った。
Inputクラス(キーの入力を管理するクラス)
当たり判定
弾と敵が当たったかを判定する関数が必要である。私は今回、弾も敵も自機もすべて円として考えた。
よって2円が接触しているかどうかを返す関数のみを実装した。
エフェクト
白い円のグラフィックが一瞬(10フレーム)で消えれば、爆風エフェクトっぽく見えるかもしれない。
エフェクト管理クラスを作り、エフェクトの配列を作るといいかもしれない。