Игры веселые
этот кодегольф здесь был настолько веселым, что мне пришлось сделать версию для других классических игр, похожих по сложности. Кратчайший путь создания базовой игры Space Invaders на Python
На этот раз, однако, попытайтесь воссоздать классическую игру «Змея», в которой вы начинаете как маленькая фигура, постоянно переходя к сбору фигур, чтобы увеличить свой счет. Когда вы собираете кусок, ваш «хвост» растет, что следует по пути, который вы сделали. Цель состоит в том, чтобы продержаться как можно дольше, не врезаясь в собственный хвост или в стены
Квалификация:
- Вы, персонажи, составляющие хвост, стены и предметы, которые вы собираете, должны быть разными персонажами.
- показать HUD с оценкой. Счет увеличивается на 1 очко за каждый собранный вами предмет.
- Игрок проигрывает, когда сталкивается со своим хвостом или стеной
- фигура появляется в случайной области сразу после того, как фигура собрана, не говоря уже о начале игры
- Скорость игры не имеет значения, если она последовательна
«Ячейки» должны быть размером 2х1, так как высота символов блока в два раза больше шириныМожет быть 1х1, потому что 2х1 просто уродливо, и я действительно не думал об этом- Ключи для изменения направления должны быть
awsd
, влево, вверх, вниз, вправо соответственно - начальное направление всегда должно быть вверх
- Вы должны показать края стены. Счет может перекрывать стены
Самый короткий код, отвечающий вышеуказанным критериям, выигрывает. Воображаемые бонусные баллы за креативность
awsd
и сstarting direction should always be up
требованиями,M-x snake
будет работатьM-: (progn(define-key snake-mode-map"a"'snake-move-left)...(setq snake-initial-velocity-x 0 snake-initial-velocity-y 1)(snake))
сделает то же самое.Ответы:
JavaScript (
553512 байт)Ссылка на воспроизводимую версию
Сначала я попытался вывести его на реальную консоль (с помощью
console.log
иconsole.clear
), но он слишком сильно мерцал, поэтому я поместил его в консольный HTML. Это будет работать с этим:Также я сначала реализовал это с ячейками 2x1, но это выглядело хуже, чем 1x1. Это было бы небольшое изменение, хотя.
Использует
awsd
клавиши на клавиатуре.Обновить:
Мне удалось сократить его до 512 (ровно 0x200) байтов, улучшив поиск хвоста и выполнив еще немного волшебства.
Теперь вы получаете 2 очка, когда фигура появляется в вашем хвосте (это особенность). Я также исправил перекрытие, когда змея кусает себя.
источник
awsd
Машинный код x86 (128 байт)
Так же, как и в моем материале « Создание фрактала Mandlebrot» , я написал программу для игры в змею размером 128 байт. Он не полностью отвечает требованиям задачи (он начинает двигаться правильно, не все стены прорисованы), но я публикую его, потому что считаю его интересным и креативным решением. Оценка отображается в двоичном виде справа, клавиши со стрелками управляют направлением движения, «еда» выбрасывается случайным образом и заканчивается, если вы ударите себя, стену или край экрана.
Ссылка на исполняемый файл и исходный код
Кроме того, что касается предыдущего комментария о том, что dosbox обманывает, я думаю, что это вполне приемлемо, если он находится в текстовом режиме отображения, поскольку с тех пор это всего лишь терминал дос.
источник
16 бит 8086
526 байт / 390 байт
Расшифруйте его с помощью декодера Base64 и назовите его «snake.com», а затем выполните из командной строки Windows. Протестировано на WinXP, вам может понадобиться использовать DosBox, чтобы получить правильный режим видео. Управляющими клавишами являются 'wasd' и место для выхода. Нажмите «w», чтобы начать.
Вот версия в символьном режиме длиной 390 байт:
В этом режиме персонажа на три байта длиннее (но змея лучше):
источник
ракушка / ш, 578 символов
Я пытался быть POSIX-совместимым (будучи максимально переносимым и избегать ошибок, даже генератор случайных чисел не нуждается в / proc). Например, вы можете воспроизвести его в своем родном терминале или через SSH-сессию: запустите с помощью 'dash -c ./snake'. Существует также не читаемый / читаемый вариант в ~ 2800 байт, который можно увидеть здесь .
Некоторые примечания: shell-скриптинг не подходит для кодирования игр 8-)
источник
a
она останавливается. Weird.echo -n
определенно не портативный Если первый операнд -n, или если любой из операндов содержит символ обратной косой черты ('\'), результаты определяются реализацией. Использование echo для всего, кроме буквального текста, без каких-либо переключателей не является переносимым. pubs.opengroup.org/onlinepubs/009604599/utilities/echo.htmlRuby 1.9 / только для Windows / (
354 337 355346 байт)Играет на доске 20х40 в консоли Windows. Оценка показана под доской. Используйте
WASD
для управления змеей, любой другой ключ для выхода (принудительно!). Отредактируйте время ожидания в конце строки 5, чтобы контролировать скорость. (Или сохраните 10 символов и сделайте его практически неиграбельным, удалив сон полностью!)Бонусная функция: случайно не запускается (когда начальная часть генерируется в месте змеи).
Мне нужно ~ 100 символов, чтобы обойти отсутствие неблокирующего getchar. Очевидно, Ruby 1.9.3 включает библиотеку «io / console», которая бы сохранила примерно половину из них. И это решение специфично для Windows. Существуют опубликованные решения для подобных вещей в системах * nix, но я не проверял их для сравнения количества символов.
Редактировать:
Пришлось добавить 18 байт после того, как я понял, что хвост растет только после еды, а не после каждого шага.
Редактировать 2: (возможно) исправлена проблема с аварийным завершением, сохранялись 9 байтов, ограничиваясь одним элементом питания.
источник
9.times{}
, сохранив 9 символов.Applesoft Basic - 478 (462)
Это был мой первый кодовый гольф, но он был написан еще в 1989 году, и он в основном реализует игру змей по запросу (но без еды, змей просто непрерывно растет, и на самом деле это два игрока, а не один), используя только две линии Applesoft Basic.
В то время было несколько конкурсов двухстрочных программ, например, в журнале Dr. Dobbs. Я потратил 6 месяцев на то, чтобы разобраться, как вписать это в две строки, которые имеют ограничение в 255 символов (и только одну ветку).
Более подробная информация на: http://davesource.com/Projects/SpeedWaller/
Программа набрана ровно в две строки:
Листинг в отформатированном виде выглядит так:
На самом деле в игре участвуют два игрока. В нижней части страницы находятся «инструкции» с клавишами и счетчиком, чтобы вы могли увидеть, сколько шагов вы пережили. Это 478 символов, из них 16 команд и вывод счетчика, поэтому 462, если вы хотите сбрить их.
источник
C # .NET Framework 4.7.2 Console (
245624402424240820521.97317471686 байт)Это было весело, но мне действительно нужно было подумать, что это за переменные, потому что они всего одна буква.
Некоторые скриншоты:
Двоичный файл: https://github.com/wooden-utensil/snakeCodeGolf/releases/tag/v1.0.0.0
GitHub репозиторий: https://github.com/wooden-utensil/snakeCodeGolf
Журнал изменений: https://github.com/wooden-utensil/snakeCodeGolf/releases
источник
Console.Write("Score:"+l);Console.WriteLine()
->Console.WriteLine("Score:"+l)
(int X,int Y)d; ...; d=(0,-1)
? Это может сэкономить байты. Я также не понимаю, почему ты делаешьVector2 d;Vector2 c;Vector2 a;
вместоVector2 d,c,a
. Я думаю, вы также можете сохранить функцию Console.SetCursorPosition в видеAction<...>
однобуквенной переменной. Вы можете вычесть DateTime с помощью оператора -. Вы также можете объявлять переменные цикла глобально и просто обнулять их при необходимости, не объявляя их.1>0
или хранитьtrue
в переменной вместо использования ключевого слова. Вы можете использовать великолепный оператор -> в циклах. ВDateTime b = DateTime.Now
части,b
может бытьvar
. Вы можете или не сможете сохранить некоторые байты с помощьюdynamic
(часто позволяет объединять объявления разных типов).m.write(String)
собственной функции,b.width
иb.height
много, которые, вероятно, могут быть сохранены в другой 1-буквенный локальный варПитон 3 - 644
Не выходит чисто. Часть может исчезнуть, если она появляется на вершине змеи.
источник
Баш (слишком много символов: около 1522)
источник