Битва роботов

  • 7
  • Недоступна
Юный робот решил запрограммировать сам себя на бой с другим роботом по имени Сгибальщик-2. Однако до конца дела пока не довёл. Теперь это ваша проблема… Ох, простите, ваша задача. Впрочем, не стоит беспокоиться: битвы роботов отличаются от драк тех, кто из плоти и крови ещё и своей логичностью.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (144)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Riccio14 уровень, Москва
пятница, 00:07
Классная задача))) UPD: Сначала обрадовался сложности. После получаса нажимания на клавиши осознал, что самое сложное в этой задаче - это увидеть дополнительные файлы с классами. Ей-богу, не задания, а словно прописи заполняешь в первом классе: "Сюда напиши это, тут удали вот это, садись, пять".
Shamil15 уровень
13 января, 14:59
Оказывается CHEST надо добавлять без условия т.е. во всех остальных случаях по этому со второй попытки прошло
S3R3N1TY15 уровень, Санкт-Петербург
10 января, 23:02
Вы решили задачу лучше, чем 35% учеников. Вам удалось ее решить с 1 попытки. Среднее количество попыток для этой задачи 2.14. Всего эту задачу решили 16487 учеников.
Riccio14 уровень, Москва
пятница, 03:09
Процент падает: Вы решили задачу лучше, чем 36% учеников. Вам удалось ее решить с 1 попытки. Среднее количество попыток для этой задачи 2.15. Всего эту задачу решили 16580 учеников.
Виталий Злобин14 уровень, Новосибирск
6 января, 17:34
Голову сломал на счёт переменной hitCount. Ребят, где объявляете её?
Виталий Злобин14 уровень, Новосибирск
6 января, 17:35
Такой результат выдаёт, переменная каждый раз создаётся заново: Амиго атаковал робота Сгибальщик-02, атакована рука, защищена рука Амиго атаковал робота Сгибальщик-02, атакована рука, защищена рука Сгибальщик-02 атаковал робота Амиго, атакована рука, защищена рука Амиго атаковал робота Сгибальщик-02, атакована рука, защищена рука Сгибальщик-02 атаковал робота Амиго, атакована рука, защищена рука Амиго атаковал робота Сгибальщик-02, атакована рука, защищена рука Сгибальщик-02 атаковал робота Амиго, атакована рука, защищена рука Амиго атаковал робота Сгибальщик-02, атакована рука, защищена рука
Yuri18 уровень, Москва
6 января, 21:43
hitCount является переменной класса, поэтому она по умолчанию инициализируется с нулем. В методе attack() мы увеличиваем hitCount на единицу:
hitCount = hitCount + 1;
и попадаем под условие
if (hitCount == 1) {
            attackedBodyPart = BodyPart.ARM;
}
поэтому "атакована рука". Затем, в методе defense() мы увеличиваем hitCount еще на 2:
hitCount = hitCount + 2;
что уже равняется трем, и попадаем под условие
} else if (hitCount == 3) {
            defendedBodyPart = BodyPart.ARM;
}
где у нас опять рука. Скорее всего, ты забыл перенести из указанного чуть выше блока кода
hitCount = 0;
что обнуляет наш счетчик, и при при следующем вызове attack(), hitCount снова равна единице, что означает "атакована рука", а при вызове defense() hitCount опять равна трем, что так же означает "защищена рука". Попробуй перенести "обнуление" в другой блок кода или вместо
hitCount = hitCount + 2;
использовать Math.random()
Виталий Злобин14 уровень, Новосибирск
7 января, 21:31
Разобрался. При добавлении CHEST в логику не перенёс обнуление в ветвь CHEST))
Игорь22 уровень, Нижний Новгород
21 декабря 2018, 08:26
Чтобы получше разобраться в изучаемой теме, сделал задачку тремя способами (каждый из которых был принят и валидатором JavaRush и IDEA): 1. просто в вызываемом методе doMove изменить тип передаваемых ссылок на Robot:
public static void doMove(Robot robotFirst, Robot robotSecond)
2. вынес объявления абстрактного метода getName в абстрактный класс AbstractRobot:
public abstract String getName();
3. в методе doMove можно сделать проверку типа передаваемого объекта и если он то, что мы ждем, привести ссылку на него к нужному типу:
if (robotFirst instanceof Robot && robotSecond instanceof Robot) {
Robot robotF = (Robot) robotFirst;
Robot robotS = (Robot) robotSecond;
System.out.println(String.format("%s атаковал робота %s, атакована %s, защищена %s",
                    robotF.getName(), robotS.getName(), attacked, defenced));
}
Дина20 уровень, Москва
3 ноября 2018, 20:57
ну наконец-то они подрались! Вы решили задачу лучше, чем 0% учеников. Вам удалось ее решить с 17 попытки. Среднее количество попыток для этой задачи 2.06. Всего эту задачу решили 15862 учеников.
Anton Lukyanov23 уровень, Гомель
2 ноября 2018, 19:33
побольше бы таких задач. она и не сложная и навыки вырабатывает и разбираться с ней одно удовольствие
Roman24 уровень, Москва
9 октября 2018, 19:35
Как только я обнаружил, что проекте есть и другие файлы, помимо Solution, задачу решить стало несложно :))) Первая задача с классами в разных файлах)
Алексей15 уровень, Санкт-Петербург
7 ноября 2018, 13:00
В пакете! В предыдущем и ещё предыдущих заданиях так же классы и интерфейсы были не вложенными в класс солюшн.
Riccio14 уровень, Москва
пятница, 00:05
Самый ценный комментарий:))
Georgy17 уровень, Москва
14 сентября 2018, 17:02
Не сказать чтобы задача сложная, но ее структура конечно ппц удивляет, особенно класс BodyPart.
Mitch15 уровень
12 августа 2018, 12:03
Помоему то что в защите hitCount = hitCount + 2; это косяк, и из за этого много null в выводе программы, тк 4ку перескакивает и счетчик не обнуляется, но если не менять валидацию проходит. Если поменять на +1 то null из выводи исчезают.
RTwo Dtwo15 уровень, Москва
26 сентября 2018, 22:56
Я воспользовался классом Random для указания значения.
lesaoni17 уровень, Москва
12 декабря 2018, 09:41
Я вообще оставил только HitCount + 1 в attack методе и HitCount = 0 в defense методе.