(動作保証なし.サポート対象外.)
ミサイル,敵機,等の消える物体...どーする?
...
// データ構造
typedef struct {
...
int life; // 状態(0:死亡中,1:活動中)
} Mobj;
// 発射関数
int Shoot(Mobj *obj, double px, double py, double vx, double vy)
{
if (obj->life != 0) return (1); // すでに活動中なら無視
obj->px = px; // 位置の初期化
obj->py = px;
obj->vx = vx; // 速度の初期化
obj->vy = vy;
obj->life = 1; // 状態の変更(活動開始)
return (0);
}
// 移動関数
int Move(Mobj *obj)
{
if (obj->life == 0) return (1); // 死亡中なら無視
obj->px += obj->vx; // 位置の変更
obj->py += obj->vy;
return (0);
}
// 消滅関数
int Kill(Mobj *obj)
{
if (obj->life == 0) return (1); // 死亡中なら無視
obj->life = 0;
return (0);
}
// ゲームの本体
int Game()
{
Mobj ore, teki, tama;
int key;
...
key = getch();
if (key == ' ') Shoot(&tama, ore.px, ore.py, 0.5, 0.0);
...
Move(&tama)
if (tama が画面外に出た?) Kill(&tama);
if (tama が teki に当たった?) {
Kill(&tama);
Kill(&teki);
...
}
...
}
...