//被*攻击的接口
interface NuclearAttacked {
//处理被*攻击的方法,参数为投放点的x和y坐标
public function NuclearAttacked($x, $y);
}
//人族的基地,实现被*攻击的接口,其他的内容暂时不考虑
class CommandCenter implements NuclearAttacked {
//处理被*攻击的方法,参数为投放点的x和y坐标
public function NuclearAttacked($x, $y)
{
//根据离*中心的距离,定义减少的血,如果超出了剩余的血,就炸掉
}
}
//巡洋舰(俗称大和),实现被*攻击的接口,其他的内容暂时不考虑
class Battlecruiser implements NuclearAttacked {
//处理被*攻击的方法,参数为投放点的x和y坐标
public function NuclearAttacked($x, $y)
{
//根据离*中心的距离,定义减少的血,如果超出了剩余的血,就炸掉
}
}
//*类
class Nuclear {
//被*攻击的对象
public $attackedThings;
//添加被*攻击的对象
public function addAttackedThings($thing)
{
//添加被*攻击的对象
$this->attackedThings[] = $thing;
}
//*爆炸的方法,参数为投放点的x和y坐标
public function blast($x, $y)
{
//把爆炸的事情交给所有涉及的对象,让他们自己处理
foreach ($this->attackedThings as $thing)
{
//把爆炸的事情交给所有涉及的对象,让他们自己处理
$thing->NuclearAttacked($x, $y);
}
}
}
//新建一个基地对象
$CommandCenter = new CommandCenter();
//新建一个巡洋舰对象
$Battlecruiser = new Battlecruiser();
//造了一颗*
$Nuclear2 = new Nuclear();
//假设投放成功,那个瞬间一个基地对象和一个巡洋舰对象在杀伤范围内
$Nuclear2->addAttackedThings($CommandCenter);
$Nuclear2->addAttackedThings($Battlecruiser);
//*爆炸,这样就把这个事件交给那些涉及的对象的处理方法,假设投放点的x和y坐标是2353, 368
$Nuclear2->blast(2353, 368);
?>