Esempio n. 1
0
<?php

include_once '../../class/pattern/composite.php';
$archer = new Archer();
echo "archer attacking with strength: {$archer->bombardStrength()}" . "<br/>";
$main_army = new Army();
$main_army->addUnit($archer);
$main_army->addUnit(new Archer());
$main_army->addUnit(new LaserCannonUnit());
echo "main_army attacking with strength: {$main_army->bombardStrength()}" . "<br/>";
$sub_army = new Army();
$sub_army->addUnit(new Archer());
$sub_army->addUnit(new Cavalry());
$sub_army->addUnit(new Cavalry());
echo "sub_army attacking with strength: {$sub_army->bombardStrength()}" . "<br/>";
$main_army->addUnit($sub_army);
echo "main_army attacking with strength: {$main_army->bombardStrength()}" . "<br/>";
$troop = new TroopCarrier();
//$troop->addUnit(new Cavalry);
$troop->addUnit(new Archer());
$troop->addUnit(new Archer());
//$troop->addUnit(new Cavalry());
echo "troop attacking with strength: {$troop->bombardStrength()}" . "<br/>";
$main_army->addUnit($troop);
echo "attacking with strength: {$main_army->bombardStrength()}" . "<br/>";
?>


Esempio n. 2
0
{
    public $value = 0;
    function add(unit $unit)
    {
        $this->value += 1;
    }
    function getValue()
    {
        return $this->vlaue;
    }
    function remove(unit $unit)
    {
        $this->value = 0;
    }
}
class Archer extends unit
{
    function add(unit $unit)
    {
        print_r($unit);
    }
    function remove(unit $unit)
    {
        print_r("Archer::remove()");
    }
}
$main = new Army();
$main->add(new Archer());
$main->add(new Archer());
$sub = new Archer();
$sub->add(new Archer());
Esempio n. 3
0
}
class LaserCannonUnit extends Unit
{
    public function bombardStrength()
    {
        return 44;
    }
}
class Cavalry extends Unit
{
    public function bombardStrength()
    {
        return 15;
    }
}
$archer = new Archer();
echo "archer attacking with strength: " . $archer->bombardStrength() . "\n";
$main_army = new Army();
$main_army->addUnit($archer);
$main_army->addUnit(new Archer());
$main_army->addUnit(new LaserCannonUnit());
$main_army->addUnit(new Cavalry());
echo "main_army attacking with strength: " . $main_army->bombardStrength() . "\n";
$sub_army = new Army();
$sub_army->addUnit(new Cavalry());
$sub_army->addUnit(new Cavalry());
$main_army->addUnit($sub_army);
echo "main_army attacking with strength: " . $main_army->bombardStrength() . "\n";
$troop = new TroopCarrier();
$troop->addUnit(new Archer());
$troop->addUnit(new LaserCannonUnit());
Esempio n. 4
0
    }
    function bombardStrength()
    {
        $ret = 0;
        foreach ($this->units as $unit) {
            $ret += $unit->bombardStrength();
        }
        return $ret;
    }
}
class UnitException extends Exception
{
}
class Archer extends Unit
{
    function addUnit(Unit $unit)
    {
        throw new UnitException(get_class($this) . " is a leaf");
    }
    function removeUnit(Unit $unit)
    {
        throw new UnitException(get_class($this) . " is a leaf");
    }
    function bombardStrength()
    {
        return 4;
    }
}
$archer = new Archer();
$archer2 = new Archer();
$archer->addUnit($archer2);