标签:php
我不知道它叫什么,我相信它是实例.
假设我们有一个“ Monster”类.此类应包含“健康”值.在创建类时将其设置为“ 5”.对于每个怪物,它还应该包含唯一的ID值.
我考虑这样的事情:
$monster_1 = new Monster(); //sets monster ID to 1
$monster_2 = new Monster(); //sets monster ID to 2
$monster_3 = new Monster(); //sets monster ID to 3
因此,假设我要计算所有怪物的总HP.
$totalHp = $monster_1->getHp() + $monster_2->getHp() + $monster_3->getHp();
它也将起作用,但是如果我添加一个名为$monster_4的新怪物该怎么办.我将不得不手动将其添加到$totalHp计算中.
我可以用数组代替$monster变量,并用foreach计算$totalHp-但看起来很奇怪…
我不知道其他语言的处理方式.
还有其他方法可以存档吗?
附言我正在尝试了解“ http://www.scirra.com/demos/ghosttutorial/”游戏背后的逻辑.您创建一个Monster类,每个Monster使用该类作为实例.我的解决方案肯定可以工作,但是我不确定这是否是归档的好方法.
解决方法:
创建一个包含一组Monsters的帮助程序类,也许是MonsterTeam类;
class Monster {
...
}
class MonsterTeam {
private $_monsters = [];
public function addMonster(Monster &$monster) {
array_push($this->_monsters, $monster);
}
public function getTotalHp() {
$hp = 0;
foreach ($this->_monsters as $monster) {
$hp += $monster->getHp();
}
return $hp;
}
}
$team = new MonsterTeam();
$monsterA = new Monster();
$team->addMonster($monsterA);
$monsterB = new Monster();
$team->addMonster($monsterB);
echo "Total HP: " . $team->getTotalHp();
标签:php
来源: https://codeday.me/bug/20191201/2079227.html