Exemplo n.º 1
0
 static function joinExisting(Unit $newUnit, Unit $occupyingUnit)
 {
     $comp = '';
     if (!is_null($comp = $occupyingUnit->getComposite())) {
         $comp->addUnit($newUnit);
     } else {
         $comp = new Army();
         $comp->addUnit($occupyingUnit);
         $comp->addUnit($newUnit);
     }
     return $comp;
 }
Exemplo n.º 2
0
    protected $tile;
    function __construct(Tile $tile)
    {
        $this->tile = $tile;
    }
}
class DiamontDecorator extends TileDecorator
{
    function getWealthFactor()
    {
        return $this->tile->getWealthFactor() + 5;
    }
}
class PollutionDecorator extends TileDecorator
{
    function getWealthFactor()
    {
        return $this->tile->getWealthFactor() - 5;
    }
}
$tile = new Plains();
$pollution = new PollutionDecorator($tile);
print $pollution->getWealthFactor() . "\n";
$army = new Army();
$army->addUnit(new Archer());
$army->addUnit(new LaserCanonUnit());
$sub_army = new Army();
$sub_army->addUnit(new Archer());
$sub_army->addUnit(new LaserCanonUnit());
$army->addUnit($sub_army);
print "Атака всей армии составляет {$army->bombardStrength()}";
Exemplo n.º 3
0
    }
}
class LaserCannonUnit extends Unit
{
    function bombardStrength()
    {
        return 44;
    }
}
class Army
{
    private $units = array();
    function addUnit(Unit $unit)
    {
        array_push($this->units, $unit);
    }
    function bombardStrength()
    {
        $ret = 0;
        foreach ($this->units as $unit) {
            $ret += $unit->bombardStrength();
        }
        return $ret;
    }
}
$unit1 = new Archer();
$unit2 = new LaserCannonUnit();
$army = new Army();
$army->addUnit($unit1);
$army->addUnit($unit2);
print $army->bombardStrength();
Exemplo n.º 4
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/>";
?>


Exemplo n.º 5
0
    function removeUnit(Unit $unit)
    {
    }
    function bombardStrength()
    {
        return 4;
    }
}
class Soldier extends Unit
{
    function addUnit(Unit $unit)
    {
    }
    function removeUnit(Unit $unit)
    {
    }
    function bombardStrength()
    {
        return 8;
    }
}
$tank = new Tank();
$tank2 = new Tank();
$soldier = new Soldier();
$army = new Army();
$army->addUnit($soldier);
$army->addUnit($tank);
$army->addUnit($tank2);
print_r($army);
$army->removeUnit($tank2);
print_r($army);
Exemplo n.º 6
0
    {
        if ($unit instanceof Cavalry) {
            throw new UnitException("Can't get a horse on the vehicle");
        }
        parent::addUnit($unit);
    }
    function bombardStrength()
    {
        return 0;
    }
}
// end previous code
class Army extends CompositeUnit
{
    function bombardStrength()
    {
        $ret = 0;
        foreach ($this->units() as $unit) {
            $ret += $unit->bombardStrength();
        }
        return $ret;
    }
}
$main_army = new Army();
$main_army->addUnit(new Archer());
$main_army->addUnit(new LaserCanonUnit());
$sub_army = new Army();
$sub_army->addUnit(new Cavalry());
$main_army->addUnit($sub_army);
$main_army->addUnit(new Cavalry());
print $main_army->textDump();