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
        return $this->due;
    }
}
//Создаем армию
$main_army = new Army();
//Добавим пару боевых единиц
$main_army->addUnit(new Archer());
$main_army->addUnit(new LaserCannonUnit());
//Создаем армию
$sub_army = new Army();
$sub_army->addUnit(new Archer());
$sub_army->addUnit(new Archer());
$sub_army->addUnit(new Archer());
$sub_army2 = new Army();
$sub_army2->addUnit(new Sapper());
$sub_army3 = new TroopCarrier();
$sub_army3->addUnit(new Sapper());
$sub_army3->addUnit(new Sapper());
$sub_army3->addUnit(new Archer());
$sub_army2->addUnit(UnitScript::joinExisting(new Sapper(), new TroopCarrier()));
//Собираем армии в одну
$main_army->addUnit($sub_army);
$main_army->addUnit($sub_army2);
$main_army->addUnit($sub_army3);
$textdump = new TextDumpArmyVisitor();
$main_army->accept($textdump);
print $textdump->getText();
print "<br />";
$taxcollector = new TaxCollectionVisitor();
$main_army->accept($taxcollector);
print $taxcollector->getReport() . "<br />";
Esempio n. 3
0
<?php

use chapter10\DiamondDecorator;
use chapter10\Plains;
use chapter10\PollutionDecorator;
$factory = new TerrainFactory(new EarthSea(-2), new EarthForest(), new EarthPlains());
print_r($factory->getSea());
print_r($factory->getForest());
print_r($factory->getPlains());
echo "<hr/>";
//TODO 216-217 page
//main army
$army = new Army();
$army->addUnit(new Archer())->addUnit(new LaserCannonUnit());
//sub army
$sub_army = new Army();
$sub_army->addUnit(new TroopCarrier())->addUnit(new LaserCannonUnit())->addUnit(new LaserCannonUnit());
//merging two armies
$army->addUnit($sub_army);
echo "Attack power is equal to: " . $army->bombardStrength();
echo "<hr/>";
$tile = new DiamondDecorator(new PollutionDecorator(new Plains()));
echo $tile->getWealthFactor();
echo "<hr/>";
$carrier = new TroopCarrier();
$carrier->addUnit(new Cavalry());
print_r(UnitScript::joinExisting($carrier, $army));
Esempio n. 4
0
class LaserCannonUnit extends Unit
{
    function bombardStrength()
    {
        return 44;
    }
}
class Cavalry extends Unit
{
    function bombardStrength()
    {
        return 33;
    }
}
class TroopCarrier
{
    function addUnit(Unit $unit)
    {
        if ($unit instanceof Cavalry) {
            throw new UnitException("Can't get a horse on the vehicle");
        }
        super::addUnit($unit);
    }
    function bombardStrength()
    {
        return 0;
    }
}
$tc = new TroopCarrier();
$ca = new Cavalry();
$tc->addUnit($ca);
Esempio n. 5
0
{
    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());
$main_army->addUnit($troop);
echo "main_army attacking with strength: " . $main_army->bombardStrength() . "\n";