Выполняем задание на Abstract Factory Pattern часть 2
Представляю Вам вторую часть задания по абстрактной фабрике - Битва танков.
В программе появился учет скоростей разворота и перезарядки танков, небольшие отчеты по совершенным действиям танков, танков теперь 5л+3с+1т. Бои проходя также один на один, но пока разворачивается, к примеру, тяжелый танк легкий успевает его прилично повредить. У танков появились очки хода, которые они тратят на действия. И немного подробнее будет изложено ниже.
Изменена структура проекта:
По замечаниям в прошлых постах исправлены фабрики - теперь для выбора типа танка используется enum:
Мммм...можно почитать тут:
Сильно переработан класс Tank - armor перенесен в абстрактный класс, добавлены переменные curDislocation, actionPoints, создан метод public void doAction(Tank tank), исправлен конструктор с учетом новых переменных:
Изменения коснулись, соответственно, и классов-наследников Tank.
И переработана сама программа TankBattle - танков теперь больше, бой идет, пока одна из сторон не уничтожена, появилась система раздачи очков действий и пауза - 1 секунда перед каждой раздачей, из-за чего появился выброс исключения, часть операций перенесена внутрь классов:
И пример боя:
Начался бой между USSR_MEDIUM и GERMAN_MEDIUM
USSR_MEDIUM расположение - 1
GERMAN_MEDIUM расположение - 0
GERMAN_MEDIUM нанес 50 урона. У противника осталось 150 очков жизни.
GERMAN_MEDIUM нанес 50 урона. У противника осталось 100 очков жизни.
USSR_MEDIUM развернулся.
USSR_MEDIUM нанес 50 урона. У противника осталось 150 очков жизни.
GERMAN_MEDIUM нанес 50 урона. У противника осталось 50 очков жизни.
USSR_MEDIUM нанес 50 урона. У противника осталось 100 очков жизни.
GERMAN_MEDIUM нанес 50 урона. У противника осталось 0 очков жизни.
USSR_MEDIUM уничтожен.
Начался бой между USSR_MEDIUM и GERMAN_MEDIUM
USSR_MEDIUM расположение - 1
GERMAN_MEDIUM расположение - 1
USSR_MEDIUM развернулся.
GERMAN_MEDIUM развернулся.
USSR_MEDIUM нанес 50 урона. У противника осталось 50 очков жизни.
GERMAN_MEDIUM нанес 50 урона. У противника осталось 150 очков жизни.
USSR_MEDIUM нанес 50 урона. У противника осталось 0 очков жизни.
GERMAN_MEDIUM уничтожен.
Начался бой между USSR_LIGHT и GERMAN_LIGHT
USSR_LIGHT расположение - 1
GERMAN_LIGHT расположение - 1
USSR_LIGHT развернулся.
GERMAN_LIGHT развернулся.
USSR_LIGHT нанес 27 урона. У противника осталось 73 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось 73 очков жизни.
USSR_LIGHT нанес 27 урона. У противника осталось 46 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось 46 очков жизни.
USSR_LIGHT нанес 27 урона. У противника осталось 19 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось 19 очков жизни.
USSR_LIGHT нанес 27 урона. У противника осталось -8 очков жизни.
GERMAN_LIGHT уничтожен.
Начался бой между USSR_LIGHT и GERMAN_MEDIUM
USSR_LIGHT расположение - 1
GERMAN_MEDIUM расположение - 1
USSR_LIGHT развернулся.
USSR_LIGHT нанес 20 урона. У противника осталось 180 очков жизни.
USSR_LIGHT нанес 20 урона. У противника осталось 160 очков жизни.
GERMAN_MEDIUM развернулся.
USSR_LIGHT нанес 20 урона. У противника осталось 140 очков жизни.
GERMAN_MEDIUM нанес 57 урона. У противника осталось 43 очков жизни.
USSR_LIGHT нанес 20 урона. У противника осталось 120 очков жизни.
USSR_LIGHT нанес 20 урона. У противника осталось 100 очков жизни.
GERMAN_MEDIUM нанес 57 урона. У противника осталось -14 очков жизни.
USSR_LIGHT уничтожен.
Начался бой между USSR_LIGHT и GERMAN_LIGHT
USSR_LIGHT расположение - 1
GERMAN_LIGHT расположение - 1
USSR_LIGHT развернулся.
GERMAN_LIGHT развернулся.
USSR_LIGHT нанес 27 урона. У противника осталось 73 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось 73 очков жизни.
USSR_LIGHT нанес 27 урона. У противника осталось 46 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось 46 очков жизни.
USSR_LIGHT нанес 27 урона. У противника осталось 19 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось 19 очков жизни.
USSR_LIGHT нанес 27 урона. У противника осталось -8 очков жизни.
GERMAN_LIGHT уничтожен.
Начался бой между USSR_LIGHT и GERMAN_LIGHT
USSR_LIGHT расположение - 0
GERMAN_LIGHT расположение - 0
USSR_LIGHT нанес 27 урона. У противника осталось 73 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось 73 очков жизни.
USSR_LIGHT нанес 27 урона. У противника осталось 46 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось 46 очков жизни.
USSR_LIGHT нанес 27 урона. У противника осталось 19 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось 19 очков жизни.
USSR_LIGHT нанес 27 урона. У противника осталось -8 очков жизни.
GERMAN_LIGHT уничтожен.
Начался бой между USSR_LIGHT и GERMAN_LIGHT
USSR_LIGHT расположение - 1
GERMAN_LIGHT расположение - 0
USSR_LIGHT развернулся.
GERMAN_LIGHT нанес 27 урона. У противника осталось -8 очков жизни.
USSR_LIGHT уничтожен.
Начался бой между USSR_LIGHT и GERMAN_LIGHT
USSR_LIGHT расположение - 0
GERMAN_LIGHT расположение - 1
USSR_LIGHT нанес 27 урона. У противника осталось 73 очков жизни.
GERMAN_LIGHT развернулся.
USSR_LIGHT нанес 27 урона. У противника осталось 46 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось -8 очков жизни.
USSR_LIGHT уничтожен.
Начался бой между USSR_LIGHT и GERMAN_MEDIUM
USSR_LIGHT расположение - 0
GERMAN_MEDIUM расположение - 1
USSR_LIGHT нанес 20 урона. У противника осталось 180 очков жизни.
USSR_LIGHT нанес 20 урона. У противника осталось 160 очков жизни.
USSR_LIGHT нанес 20 урона. У противника осталось 140 очков жизни.
USSR_LIGHT нанес 20 урона. У противника осталось 120 очков жизни.
GERMAN_MEDIUM развернулся.
USSR_LIGHT нанес 20 урона. У противника осталось 100 очков жизни.
GERMAN_MEDIUM нанес 57 урона. У противника осталось 43 очков жизни.
USSR_LIGHT нанес 20 урона. У противника осталось 80 очков жизни.
USSR_LIGHT нанес 20 урона. У противника осталось 60 очков жизни.
GERMAN_MEDIUM нанес 57 урона. У противника осталось -14 очков жизни.
USSR_LIGHT уничтожен.
Начался бой между USSR_MEDIUM и GERMAN_LIGHT
USSR_MEDIUM расположение - 1
GERMAN_LIGHT расположение - 0
GERMAN_LIGHT нанес 20 урона. У противника осталось 130 очков жизни.
GERMAN_LIGHT нанес 20 урона. У противника осталось 110 очков жизни.
GERMAN_LIGHT нанес 20 урона. У противника осталось 90 очков жизни.
USSR_MEDIUM развернулся.
GERMAN_LIGHT нанес 20 урона. У противника осталось 70 очков жизни.
USSR_MEDIUM нанес 57 урона. У противника осталось -11 очков жизни.
GERMAN_LIGHT уничтожен.
Начался бой между USSR_LIGHT и GERMAN_LIGHT
USSR_LIGHT расположение - 0
GERMAN_LIGHT расположение - 1
USSR_LIGHT нанес 27 урона. У противника осталось 73 очков жизни.
USSR_LIGHT нанес 27 урона. У противника осталось 46 очков жизни.
GERMAN_LIGHT развернулся.
USSR_LIGHT нанес 27 урона. У противника осталось 19 очков жизни.
GERMAN_LIGHT нанес 27 урона. У противника осталось -8 очков жизни.
USSR_LIGHT уничтожен.
Начался бой между USSR_MEDIUM и GERMAN_LIGHT
USSR_MEDIUM расположение - 1
GERMAN_LIGHT расположение - 1
GERMAN_LIGHT развернулся.
GERMAN_LIGHT нанес 20 урона. У противника осталось 50 очков жизни.
USSR_MEDIUM развернулся.
GERMAN_LIGHT нанес 20 урона. У противника осталось 30 очков жизни.
USSR_MEDIUM нанес 57 урона. У противника осталось -38 очков жизни.
GERMAN_LIGHT уничтожен.
Начался бой между USSR_MEDIUM и GERMAN_MEDIUM
USSR_MEDIUM расположение - 1
GERMAN_MEDIUM расположение - 1
USSR_MEDIUM развернулся.
USSR_MEDIUM нанес 50 урона. У противника осталось 10 очков жизни.
GERMAN_MEDIUM развернулся.
GERMAN_MEDIUM нанес 50 урона. У противника осталось -20 очков жизни.
USSR_MEDIUM уничтожен.
Начался бой между USSR_MEDIUM и GERMAN_MEDIUM
USSR_MEDIUM расположение - 1
GERMAN_MEDIUM расположение - 0
GERMAN_MEDIUM нанес 50 урона. У противника осталось 150 очков жизни.
GERMAN_MEDIUM нанес 50 урона. У противника осталось 100 очков жизни.
USSR_MEDIUM развернулся.
USSR_MEDIUM нанес 50 урона. У противника осталось 50 очков жизни.
GERMAN_MEDIUM нанес 50 урона. У противника осталось 50 очков жизни.
USSR_MEDIUM нанес 50 урона. У противника осталось 0 очков жизни.
GERMAN_MEDIUM уничтожен.
Начался бой между USSR_MEDIUM и GERMAN_MEDIUM
USSR_MEDIUM расположение - 0
GERMAN_MEDIUM расположение - 0
USSR_MEDIUM нанес 50 урона. У противника осталось -40 очков жизни.
GERMAN_MEDIUM уничтожен.
Начался бой между USSR_MEDIUM и GERMAN_HEAVY
USSR_MEDIUM расположение - 0
GERMAN_HEAVY расположение - 0
USSR_MEDIUM нанес 40 урона. У противника осталось 460 очков жизни.
GERMAN_HEAVY нанес 90 урона. У противника осталось -40 очков жизни.
USSR_MEDIUM уничтожен.
Начался бой между USSR_HEAVY и GERMAN_HEAVY
USSR_HEAVY расположение - 1
GERMAN_HEAVY расположение - 1
GERMAN_HEAVY развернулся.
USSR_HEAVY развернулся.
GERMAN_HEAVY нанес 80 урона. У противника осталось 420 очков жизни.
USSR_HEAVY нанес 80 урона. У противника осталось 380 очков жизни.
GERMAN_HEAVY нанес 80 урона. У противника осталось 340 очков жизни.
USSR_HEAVY нанес 80 урона. У противника осталось 300 очков жизни.
GERMAN_HEAVY нанес 80 урона. У противника осталось 260 очков жизни.
USSR_HEAVY нанес 80 урона. У противника осталось 220 очков жизни.
GERMAN_HEAVY нанес 80 урона. У противника осталось 180 очков жизни.
USSR_HEAVY нанес 80 урона. У противника осталось 140 очков жизни.
GERMAN_HEAVY нанес 80 урона. У противника осталось 100 очков жизни.
USSR_HEAVY нанес 80 урона. У противника осталось 60 очков жизни.
GERMAN_HEAVY нанес 80 урона. У противника осталось 20 очков жизни.
USSR_HEAVY нанес 80 урона. У противника осталось -20 очков жизни.
GERMAN_HEAVY уничтожен.
App.Tanks.Ussr.UssrHeavyTank@677327b6
Все танки Германии уничтожены!
Исходники программы: https://github.com/Norfin85/TankBattle