PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (4): « 1 2 3 [4]

> Найдено сообщений: 46
lamokk Отправлено: 10 Апреля, 2013 - 00:27:44 • Тема: Кодирование сражения двух армий (как организовать) • Форум: Вопросы новичков

Ответов: 6
Просмотров: 313
Здравтсвуйте.
Подскажите (желательно наглядно), как организовать в коде сражение двух армий.
Что-то я никак не соображу, может Вы чем поможете уважаемые знатоки.
Ситуация: нападает первая армия
если атакующая сила 1-й армии больше, чем защита одгого из юнитов в другой армии, то юнит из второй армии удаляется
далее атакует 2-я армия, ситуация таже, и так до конца, пока одна из армий не победит окончательно.
Подскажите реализацию в коде, допустим класс назевем Battle
PHP:
скопировать код в буфер обмена
  1. class Battle {
  2.    
  3.  function execute(Unit $Army1, Unit $Army2) {
  4.  Требуется реализация  
  5.  }
  6. }

Спасибо.

Приведу все классы для наглядности...
PHP:
скопировать код в буфер обмена
  1.  
  2. abstract class Unit {
  3.     function addUnit() {
  4.         echo get_class($this).' относиться к листьям';
  5.     }
  6.     function removeUnit() {
  7.         echo get_class($this).' относиться к листьям';        
  8.     }
  9.     abstract function bombardStrength();
  10.     abstract function defensiveStrenth();
  11. }
  12.  
  13. class Human extends Unit {
  14.    
  15.     function bombardStrength() {
  16.         return 2;
  17.     }
  18.    
  19.     function defensiveStrenth() {
  20.         return 2;
  21.     }
  22. }
  23.  
  24. class GunCannon extends Unit {
  25.    
  26.     function bombardStrength() {
  27.         return 5;
  28.     }
  29.     function defensiveStrenth() {
  30.         return 5;
  31.     }
  32. }
  33.  
  34. class Army extends Unit {
  35.    
  36.     private $units = array();
  37.  
  38.     function addUnit(Unit $unit) {
  39.         if (in_array($unit, $this->units, true)) {
  40.             return;
  41.         }
  42.         $this->units[] = $unit;
  43.     }
  44.    
  45.     /*
  46.     //5.3
  47.     function removeUnit() {
  48.         $this->units = array_udiff($this->units, array($unit),
  49.         function($a, $b) { return ($a === $b) ?0:1; } );
  50.     }
  51.      */
  52.     //5.2
  53.      function removeUnit() {
  54.         $this->units = array_udiff($this->units, array($unit),
  55.         create_function('$a, $b', 'return ($a === $b) ?0:1;' ) );
  56.     }
  57.    
  58.     function bombardStrength() {
  59.         $ret = 0;
  60.         foreach ($this->units as $unit) {
  61.             $ret +=$unit->bombardStrength();
  62.         }
  63.         return $ret;
  64.     }
  65.    
  66.     function defensiveStrenth() {
  67.         $ret = 0;
  68.         foreach ($this->units as $unit) {
  69.             $ret +=$unit->defensiveStrenth();
  70.         }
  71.         return $ret;
  72.        
  73.     }
  74.    
  75.    
  76. }
  77.  

Ну и соответственно создание и сражение
PHP:
скопировать код в буфер обмена
  1.  
  2. $Army1 = new Army();
  3. $Army1->addUnit(new Human());
  4. $Army1->addUnit(new Human());
  5. $Army2 = new Army();
  6. $Army2->addUnit(new GunCannon());
  7. $Army2->addUnit(new Human());
  8.  
  9. $battle = new Battle();
  10. $battle->execute($Army1, $Army2);
  11.  

Страниц (4): « 1 2 3 [4]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB