Задача уже решена, но не дает успокоиться.
Вот фрагмент №1:
public static void doMove(AbstractRobot robotFirst, AbstractRobot robotSecond) {
BodyPart attacked = robotFirst.attack();
BodyPart defenced = robotFirst.defense();
System.out.println(String.format("%s атаковал робота %s, атакована %s, защищена %s",
robotFirst.getName(), robotSecond.getName(), attacked, defenced));
}
Если придерживаться текстовочки из System.out.println, то первый робот атакует, а второй защищается, тогда почему у нас:
BodyPart attacked = robotFirst.attack();
BodyPart defenced = robotFirst.defense();
а не так (если, например, атакует рука первого робота и защищается рука второго робота)
BodyPart attacked = robotFirst.attack();
BodyPart defenced = robotSecond.defense();
или так (если, например, атакована рука второго робота и защищена рука второго робота, так как атакует то у нас первый робот)
BodyPart attacked = robotSecond.attack();
BodyPart defenced = robotSecond.defense();
Вот фрагмент №2:
Вопрос по этому фрагменту актуален, если, например, атакует рука первого робота и защищается рука второго робота.
public BodyPart attack() {
BodyPart attackedBodyPart = null;
hitCount = hitCount + 1;
if (hitCount == 1) {
attackedBodyPart = BodyPart.ARM;
} else if (hitCount == 2) {
attackedBodyPart = BodyPart.HEAD;
} else if(hitCount ==3) {
hitCount = hitCount-1;
attackedBodyPart = BodyPart.CHEST;
}
else if (hitCount == 4) {
hitCount = 0;
attackedBodyPart = BodyPart.LEG;
}
return attackedBodyPart;
}
Как может атаковать ГРУДЬ?
Атакована она может быть, без проблем, но вот атаковать...
Возможно, я очень сильно туплю.
Возможно я не видел ответы на мои вопросы, а они были ранее. Но, правда, я искал.