Добро пожаловать, храбрый игрок в гольф код! Сегодня вы окажетесь посреди великой битвы между гоблином и эльфом!
goblin attacks elf!
elf dodges!
elf attacks goblin!
elf hits goblin for 13 damage!
goblin has 37 health left.
goblin attacks elf!
goblin hits elf for 1 damage!
elf has 49 health left.
elf attacks goblin!
elf hits goblin for 19 damage!
goblin has 18 health left.
goblin attacks elf!
goblin hits elf for 26 damage!
elf has 23 health left.
elf attacks goblin!
elf hits goblin for 20 damage!
goblin has been slain!
Соревнование
Ваша задача - симулировать битву, как описано выше. Вы получите ввод в этой форме:
creatureName health strength defense accuracy agility
Например, битва между гоблином и эльфом будет:
goblin 50 40 35 3 2 elf 50 35 30 4 5
Первое и второе существа будут чередовать атаки.
- Распечатать 'creatureName атакует otherCreatureName!'
- Проверьте, не уклоняется ли существо. Существо будет уклоняться от атаки, если (его умножение на ловкость rand (), деленное на 2) больше, чем (умение атакующего умножить на rand ()).
- Если существо уклоняется, выведите «creatureName dodges!»
- В противном случае рассчитайте нанесенный урон путем вычитания (умножение силы противника на ранд ()) и (умножение времени защиты на ранда (), деленное на 2). Минимальный урон равен 1. Напечатайте 'creatureName поражает otherCreatureName за (x) урон!' Затем выведите «creatureName имеет (x) оставленное здоровье». если здоровье существа не меньше 0, в этом случае ...
- Если здоровье существа равно 0 или меньше, выведите «creatureName было убито!» и закончить программу.
правила
- Самый короткий код выигрывает.
- Не печатайте буквально «creatureName», а заменяйте его именем существа. Не печатайте «(x) урон» или «(x) здоровье;» заменить их на фактическую сумму. (Я должен указать это, потому что некоторые люди очень креативны с нарушением правил.: P)
code-golf
simulation
Дверная ручка
источник
источник
goblin 50 40 18 3 2 elf 50 35 15 4 5
?Ответы:
APL (
249244242)На этот раз процедурный стиль, поэтому (по крайней мере, в Dyalog) вы должны вставить это в окно редактора. Я назвал его
G
(первая строка - это имя, я включил его, потому что именно так оно и отображается в окне редактора, поэтому его, вероятно, следует учитывать).(edit: использовались числовые GOTO вместо меток строк. Оказывается, что (по крайней мере, в Dyalog) все, что определяет метка
X:
, -X
это номер строки, поэтому с таким же успехом можно использовать числа напрямую.)источник
Perl, 254 + 1
Беги с
perl -nM5.010
(илиperl -nE '<code>'
). За мета , то-n
отсчеты переключателя как один дополнительный символ. В этом коде нет никаких хитростей в игре в гольф, кроме, возможно, использования в$=
качестве переменной урона для сохраненияint
.Изменить: Надеюсь, расчет ущерба теперь правильный.
источник
CoffeeScript
454432Передайте строку,
b
чтобы получить результаты. Я подумал, что было бы веселее иметь графический анимационный вывод, поэтому я собрал демо. Просто измените поле ввода, чтобы изменить статистику и имена. Фотографии из jpg.to, который является неофициальным API Google-изображений.Супер Экшн Демо
Рекомендуемые входы (предложите свой):
источник
voldemort 9999
haha :D10e42
, but your browser may freeze...Ruby,
292264My first code golf entry; how that method definition parses is beyond me :)
Is it OK to read the input from command-line parameters (e.g.
ruby battle.rb goblin 50 40 35 3 2 elf 50 35 30 4 5
)?Ideone run
источник
JavaScript;
347341333As I always do, I shall start off with my own solution:
EDIT: apparently assigning
console.log
to a variable breaks on some browsers, so here's the same code with a function declaration instead:I was thinking of changing it to
alert
, but that would just be evil :Pисточник
Uncaught TypeError: Illegal invocation
because ofa=console.log
. would'nt you have to bind theconsole
object as context, e.ga=console.log.bind(console)
?alert
, but that would be very annoying :PPython: 393
I squeezed a little harder, if I had 3 I could probably do
print = p
to shorten it by a few more, but I don't think there is much left in this one.393:
399:
I think people are skipping that if you have a good condition in the loop, you don't need to check if the target is below health.
источник
JavaScript:
340306339:
306:
Sample output:
Edit notes: +1 character, i missed the "!" after "dodges"
Oh and i forgot to actually put an output after "Sample output"
Changed the header to JavaScript, as @tbodt suggests
источник
R: 387 characters
Or fully-developed, with indentations and comments, to make things clearer:
источник
C# -
464453 charsAfter a couple of nights on this I can't seem to get even close to the other entries (not that surprising for C#). Still room for improvement I suspect. No especially clever tricks.
Commented:
источник
Python 3, 314
источник