プログラム自体は結構前に予定していた分は組み終わってたんですけど
色々ごちゃごちゃと関係のない作業をしていたら結構日が経ってしまいました。
実装したもの
敵の実装(1種類)
当たり判定とノックバック処理
体力がなくなるとゲームオーバーに
変更点
武器管理クラスをなくしていろいろ書き換え
マップチップ昔のパソコンから掘り出した自作素材と差し替え
ソース クラス図

スクリーンショット

敵はスライムを実装しました。
ええ、誰がなんと言おうとスライムです。
……………………ドット絵が打てないorz
現在はプレイヤーの体力が表示されていないのですが、
一応5回攻撃を受けたらゲームオーバーになるようにしています。
当たり判定のチェックはいろいろ考えた結果円対円ではなく矩形対矩形にすることにしました。
今回のソースで一つ気になっているところがありまして、
弾と敵の当たり判定なのですが、
void CCharMgr::CheckHitBulletToEnemy(){
for( std::list::iterator itE=m_EnemyList.begin(); itE!=m_EnemyList.end(); ){
for( std::list::iterator itB=m_BulletList.begin(); itB!=m_BulletList.end(); ){
// 当たり判定
if( CheckCollisionRectToRect( (*itE)->GetHitRect(), (*itB)->GetAttackRect() ) ){
int damage = (*itB)->GetPower(); // ダメージ量取得
// 弾を消す
delete (*itB); (*itB) = nullptr;
itB = m_BulletList.erase(itB );
// 敵を消す
if( (*itE)->SetDamage( damage ) ){
delete (*itE); (*itE) = nullptr;
itE = m_EnemyList.erase( itE );
goto NEXT; // 苦し紛れ
}
}
else{
itB++;
}
}
itE++;
NEXT:;
}
}
ていうかまあ何かどう見てもこのコード間抜けなんですよね。
冒頭にも書いた通りソースコードが汚くなってきたので
掃除も兼ねて怪しい処理なんかを潰していきたいと思います。
ではでは(´・ω・)ノシ