IMI docs

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

practice:tasks:army [2020/04/29 09:11]
superuser created
practice:tasks:army [2020/04/29 09:14] (current)
superuser
Line 1: Line 1:
-<​code>​ 
 Войска. Войска.
  
Line 5: Line 4:
  
 Базовые типы юнитов:​ Базовые типы юнитов:​
 +
 - Unit: Абстрактный (НЕОБЯЗАТЕЛЬНО) воин специализирующийся на нанесении физического урона - Unit: Абстрактный (НЕОБЯЗАТЕЛЬНО) воин специализирующийся на нанесении физического урона
 +
 - SpellCaster:​ Абстрактный (НЕОБЯЗАТЕЛЬНО) воин специализирующийся на нанесении магического урона - SpellCaster:​ Абстрактный (НЕОБЯЗАТЕЛЬНО) воин специализирующийся на нанесении магического урона
  
Line 11: Line 12:
  
 Юниты, наносящие физический урон: Юниты, наносящие физический урон:
-Soldier [Солдат] : юнит без всяких специальных возможностей +  * Soldier [Солдат] : юнит без всяких специальных возможностей 
-Rogue [Разбойник] : разбойника невозможно контратаковать +  ​* ​Rogue [Разбойник] : разбойника невозможно контратаковать 
-Berserker [Берсерк] : на берсеркера не действует магия +  ​* ​Berserker [Берсерк] : на берсеркера не действует магия 
-Vampire [Вампир] : при атаке / контратаке потребляет часть жизненных сил противника +  ​* ​Vampire [Вампир] : при атаке / контратаке потребляет часть жизненных сил противника 
-Werewolf [Оборотень] : умеет превращаться в волка (в состоянии волка имеет более высокий показатель жизненных сил и атаки, но получает больший урон от магии)+  ​* ​Werewolf [Оборотень] : умеет превращаться в волка (в состоянии волка имеет более высокий показатель жизненных сил и атаки, но получает больший урон от магии)
  
 Юниты, способные к магии: Юниты, способные к магии:
-Wizard [Волшебник] : атакует боевыми заклинаниями (лечебные заклинания имеют только половину силы) +  * Wizard [Волшебник] : атакует боевыми заклинаниями (лечебные заклинания имеют только половину силы) 
-Healer [Целитель] : владеет целебными заклинаниями (боевые заклинания имеют только половину силы) +  ​* ​Healer [Целитель] : владеет целебными заклинаниями (боевые заклинания имеют только половину силы) 
-Priest [Священник] : владеет целебными заклинаниями (боевые заклинания имеют только половину силы), наносит x2 урон нежити (Vampire, Necromancer) +  ​* ​Priest [Священник] : владеет целебными заклинаниями (боевые заклинания имеют только половину силы), наносит x2 урон нежити (Vampire, Necromancer) 
-Warlock [Чернокнижник] : призывает демонов (класс Demon немного расширяет класс Soldier) +  ​* ​Warlock [Чернокнижник] : призывает демонов (класс Demon немного расширяет класс Soldier) 
-Necromancer [Некромант] : следит за всеми кого атаковал,​ в случае смерти атакованого юнита, получает часть его жизненных сил+  ​* ​Necromancer [Некромант] : следит за всеми кого атаковал,​ в случае смерти атакованого юнита, получает часть его жизненных сил
  
 Интерфейсы:​ Интерфейсы:​
-Observer [наблюдатель] : пригодится для Necromancer +  * Observer [наблюдатель] : пригодится для Necromancer 
-Observable [наблюдаемое] : пригодится для всех остальных+  ​* ​Observable [наблюдаемое] : пригодится для всех остальных
  
 Напрячь мозг и: Напрячь мозг и:
-Вынести механику атаки в виде отдельных классов +  * Вынести механику атаки в виде отдельных классов 
-Вынести заклинания в виде отдельных классов +  ​* ​Вынести заклинания в виде отдельных классов 
-Вынести состояния юнитов в виде отдельных классов+  ​* ​Вынести состояния юнитов в виде отдельных классов
  
-Придумать внятную систему разделения боевых магов и целителей +  * Придумать внятную систему разделения боевых магов и целителей 
-Придумать внятную систему маркировки нежити+  ​* ​Придумать внятную систему маркировки нежити
  
-Разделить урон на физический и магический +  * Разделить урон на физический и магический 
-Реализовать волшебникам книгу заклинаний (std::map и enum вам в этом помогут) +  ​* ​Реализовать волшебникам книгу заклинаний (std::map и enum вам в этом помогут) 
-Структурировать исходный код+  ​* ​Структурировать исходный код
  
 Дополнительные возможности:​ Дополнительные возможности:​
-Вампир может сделать вампиром другого юнита (исключение Werewolf) +  * Вампир может сделать вампиром другого юнита (исключение Werewolf) 
-Оборотень может сделать оборотнем другого юнита (исключение Vampire)+  ​* ​Оборотень может сделать оборотнем другого юнита (исключение Vampire)
  
 Важно: Важно:
-Не забывайте,​ что в C++ есть наследование +  * Не забывайте,​ что в C++ есть наследование 
-Не забывайте,​ что в С++ есть множественное наследование +  ​* ​Не забывайте,​ что в С++ есть множественное наследование 
-Не забывайте,​ что в С++ есть перегрузка функций+  ​* ​Не забывайте,​ что в С++ есть перегрузка функций
  
 P.S.: Господа,​ данная задача на творчество. Я не ставлю вам никаких ограничений. Не следует задавать вопросы типа "​Какой урон юнит наносит при контратаке?"​ или "​Сколько очков здоровья должен получать Некромант?"​. Эта задача на проработку ООП. Чем сложнее и интереснее вы придумаете,​ тем больше опыта заработаете. P.S.: Господа,​ данная задача на творчество. Я не ставлю вам никаких ограничений. Не следует задавать вопросы типа "​Какой урон юнит наносит при контратаке?"​ или "​Сколько очков здоровья должен получать Некромант?"​. Эта задача на проработку ООП. Чем сложнее и интереснее вы придумаете,​ тем больше опыта заработаете.
Line 57: Line 58:
  
 Нововведения:​ Нововведения:​
-У каждого юнита есть радиус атаки и дальность ходьбы. +  * У каждого юнита есть радиус атаки и дальность ходьбы. 
-У каждого заклинания есть радиус действия. +  ​* ​У каждого заклинания есть радиус действия. 
-Mount [Ездовые животные] - обладатель ездового животного может передвигаться на увеличенное количество клеток. +  ​* ​Mount [Ездовые животные] - обладатель ездового животного может передвигаться на увеличенное количество клеток. 
-Archer [Лучник] - умеет наносить урон на расстоянии. +  ​* ​Archer [Лучник] - умеет наносить урон на расстоянии. 
-Солдата можно сделать лучником.+  ​* ​Солдата можно сделать лучником.
  
 Часть 3. Пишу так, чисто поржать. Все равно никто не сделает. Часть 3. Пишу так, чисто поржать. Все равно никто не сделает.
  
 Визуализация:​ Визуализация:​
-Нарисовать доску в консоли. +  * Нарисовать доску в консоли. 
-Если в клетке находится юнит - визуально это обозначить. +  ​* ​Если в клетке находится юнит - визуально это обозначить. 
-</​code>​+