Army#3
Conversation
| ", имя='" + getName() + '\'' + | ||
| ", живой ли=" + getAlive() + | ||
| '}'; | ||
| } |
There was a problem hiding this comment.
Если ты все свойства держишь в классе Unit, почему ты toString два раза переопределяешь в классах-потомках (Soldier и Medic)? И формат неодинаковый, кстати. И необычный - обычно пишут так:
класс: {
имя поля 1 = значение поля 1,
имя поля 2 = значение поля 2,
...
}
|
|
||
| System.out.println(name + " стреляет по " + target.name + " и наносит " + atk + " урона "); | ||
| target.setHp((int) (target.hp - atk * (1 - target.armor))); | ||
| target.status(this); |
There was a problem hiding this comment.
А зачем в статус передается объект атакующего юнита? Вроде, и не используешь его там никак и по смыслу непонятно, зачем оно там нужно
There was a problem hiding this comment.
В статус передается юнит "цель" , и , если она умирает, выводится прощальный лай "Press F", возможно я тебя неправильно понял.
There was a problem hiding this comment.
- в статусе меняется значение isAlive на false, если цель умирает
| class Medic extends Unit { | ||
| Medic(int atk, double armor, String name) { | ||
| super(atk, armor, name); | ||
| } |
There was a problem hiding this comment.
Если для медика предполагается отсутствие атаки, почему бы не устранить аргумент "сила атаки" из конструктора для медика?
There was a problem hiding this comment.
Исправил, сделал у юнита базовую атаку = 0, убрал у медика atk из конструктора
| @Override | ||
| void attack(Unit target) { | ||
| if (hp > 0) { | ||
| System.out.println(this.name + " не может атаковать"); |
There was a problem hiding this comment.
Здесь требования нарушены.
Юниты с силой атаки = 0 не могут атаковать других юнитов.
Больше ничего про ограничения на атаку не говорится.
Однако сейчас можно создать медика с атакой >0, и он не сможет атаковать.
There was a problem hiding this comment.
Исправил, так же добавил early return для солдата, если его сила атаки = 0.
| valera.attack(lena); | ||
| valera.attack(lena); | ||
| valera.attack(lena); | ||
| valera.attack(lena); |
There was a problem hiding this comment.
Вот, кстати, можно бы было на цикл while как раз переложить (это там где мы не знаем, сколько итераций потребуется. Пишем while (пока лена жива) {valera.attack(lena);}
No description provided.