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

  • 7
  • Недоступна
Юный робот решил запрограммировать сам себя на бой с другим роботом по имени Сгибальщик-2. Однако до конца дела пока не довёл. Теперь это ваша проблема… Ох, простите, ваша задача. Впрочем, не стоит беспокоиться: битвы роботов отличаются от драк тех, кто из плоти и крови ещё и своей логичностью.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (172)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Richard Hendricks14 уровень, Екатеринбург
среда, 17:05
Вот этот комент ниже от Alexa:
hitCount = (int) (Math.random() * 4) + 1;
ваще бомба. Ну и слово АТАКОВАНА надо заменить на АТАКУЕТ, так логичнее. Смешно представляется ситуация, когда "атакует голова, защищена нога" Этож как надо изогнуться... :) А так же можно создать очки попаданий: например если атакует рука, а при этом защищена нога (а не рука), то это попадание - int score++; А еще хочется всё это дело анимировать, но я не могу, у меня лапки. И вообще, на джаве можно робота нарисовать?
Андрей18 уровень, Гомель
11 марта, 18:38
Не мешало бы реализацию доделать, с текущей hitCount в attack бывает только 0,1,3 а в defense 0,2,3 что при добавлении еще одной части тела выключает одну из частей тела. В целом интересно.
zyto15 уровень, Москва
11 марта, 11:40
Сделал грудь вместо hitCount = 3 (предыдущий 3й пункт сдвинул на >=4), всё прокатило. Увидел вот такое в результате: Амиго атаковал робота Сгибальщик-02, атакована рука, защищена грудь Амиго атаковал робота Сгибальщик-02, атакована нога, защищена нога Сгибальщик-02 атаковал робота Амиго, атакована грудь, защищена рука Амиго атаковал робота Сгибальщик-02, атакована рука, защищена грудь Сгибальщик-02 атаковал робота Амиго, атакована нога, защищена нога Амиго атаковал робота Сгибальщик-02, атакована грудь, защищена рука Сгибальщик-02 атаковал робота Амиго, атакована рука, защищена грудь Амиго атаковал робота Сгибальщик-02, атакована нога, защищена нога
VladSL16 уровень, Уфа
27 февраля, 08:22
Задача интересная, но, со стороны разработчиков подсказка о том, что бой сделать "бесконечным" была бы к месту. Валидатор ругается на отсутствие "груди", хотя, на самом деле бой просто "заканчивается" раньше. В изначальной логике if-else-if именно так и заложено, подумал, менять нельзя. А исправляется легко - подсказка ниже уже есть (спасибо Tanarri).
Tanarri18 уровень
25 февраля, 22:33
Если продолжить логический ряд в цикле атака и защита и выставить грудь на 4, перенеся туда же обнуление hitCount то получите значения для hitCount: 0 - начало работы программы 1 - первая атака 3 - первая защита 4 - вторая атака 6 - вторая защита и null в выводе на консоль здесь и далее как результат. Вывод - выносите грудь и hitCount = 0 в блок else вместо блока else if
Евгений19 уровень, Днепр
23 февраля, 13:37
Когда BodyPart.CHEST выпадало один раз из четырех, валидатор ругался, что методы attack() и defense() должны иногда возвращать BodyPart.CHEST. Когда написал в обоих методах
return BodyPart.CHEST;
все прошло. Загадочная штука валидатор. P. S. Хотя задача в целом понравилась.
NewBuy16 уровень, Санкт-Петербург
23 февраля, 10:50
Абсолютно не понятно какую логику боя подразумевали разработчики, и какую нужно получить, в итоге использовал генератор случайных чисел, валидатор такое хавает, ну и ладно...
Владимир Павленко22 уровень, Москва
19 февраля, 21:02
С 14 попытки решил, точнее подтосовал результат :) Писало "Новая часть тела(BodyPart) должна быть добавлена в логику методов attack и defense в классе AbstractRobot." ну все было... пришлось поменять с рукой и все прошло. Эта задачка мне будет сниться!
Petrusiova19 уровень
19 февраля, 15:58
Задача прошла валидацию только с 18-й попытки: грудь упоминалась при выводе на консоль только в "attack" . Добавлена же была и в "attack" и в "defence". Валидатор ругался только на метод "attack", а проблема была с "defence"
Lyudmila Grayvoronskaya18 уровень, Одесса
17 февраля, 08:27
Валидатор принял только: вынесения объявления абстрактного метода getName в абстрактный класс AbstractRobot:
public abstract String getName();
В итоге решила с 7 попытки :(
public static void doMove(Robot robotFirst, Robot robotSecond)
- этот вариант не прошел !!!