<?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/>"; ?>
} } //Создаем армию $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 />"; print "Итого: ";
<?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));
{ 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);
{ 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";