class Field
{
GameObject[] go; ///このフィールドにあるオブジェクト。
public void timeForward()
{
//ゲーム時間が経過した時の、フィールド内の処理(オブジェクトの衝突検知とか)を書く。
}
}
class abstract GameObject
{
public float x; ///このオブジェクトのx座標。
public float y; ///このオブジェクトのy座標。
/**
ゲーム時間が経過した時の、このオブジェクトの挙動を書く。
FieldのtimeForward()から呼び出される。
*/
public void timeForward();
/**
このオブジェクトが他のオブジェクトと衝突した時の挙動を書く。
FieldのtimeForward()から呼び出される。
Params:
go = このオブジェクトと衝突したオブジェクトが渡される。
*/
public void collideReaction(GameObject go);
}
class Missile : GameObject
{
public int power; ///ミサイルの攻撃力。
public int speed; ///ミサイルの推進力。
public override void timeForward()
{
//前に推進する処理とか。
}
public override void collideReaction(GameObject go)
{
//爆発処理とか。
}
}
class HomingMissile : Missile
{
public int lead; ///誘導性能。
public override void timeForward()
{
//追加で誘導処理でも。
}
//衝突処理には変更無し。
}