0

Выполняем задание на Abstract Factory Pattern часть 2

Представляю Вам вторую часть задания по абстрактной фабрике - Битва танков.

В программе появился учет скоростей разворота и перезарядки танков, небольшие отчеты по совершенным действиям танков, танков теперь 5л+3с+1т. Бои проходя также один на один, но пока разворачивается, к примеру, тяжелый танк легкий успевает его прилично повредить. У танков появились очки хода, которые они тратят на действия. И немного подробнее будет изложено ниже.

Изменена структура проекта:

По замечаниям в прошлых постах исправлены фабрики - теперь для выбора типа танка используется enum:

Мммм...можно почитать тут:

http://developer.alexanderklimov.ru/android/java/enum.php

Сильно переработан класс 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

Правила сообщества

Прошу воздержаться от взаимных оскорблений.

Больше позитива, ведь программирование - это весело)