РЕДАКТИРОВАТЬ: Недавно мой вопрос был предложен в качестве дубликата 2048 Bot Challenge . Я хотел бы подчеркнуть, что этот вопрос отличается от этого вопроса и потребует, чтобы ответы на него отличались от этого вопроса. 2048 Bot Challenge попросил пользователя создать бота, и он будет работать в течение часа, при этом наивысшим показателем будет оценка пользователя. Кроме того, он был ограничен 555 байтами. Моя задача запускает код гораздо реже, всего 3 раза. Ваш счет рассчитывается с использованием среднего из этих трех раз и делится на длину символа вашего кода в гольфе. Мой вопрос призывает к тому, чтобы записи были «умнее», а не пытались получить самый высокий балл за счет грубой силы.
-
РЕДАКТИРОВАТЬ: метод get был изменен на getTile, чтобы избежать конфликта с ключевым словом JS get. Кроме того, был добавлен раздел рекордов.
Недавно я создал сайт, который позволяет управлять популярной игрой 2048 с помощью JavaScript. Мой сайт связан здесь:
Как:
Ace Editor находится над доской. Вы помещаете в него код, который запускается один раз каждые 250 мс или 4 раза в секунду. Это называется циклом.
Используйте следующие методы для управления доской. Вы не можете использовать клавиши со стрелками.
up(); //move up
down(); //move down
left(); //move left
right(); //move right
move(integer); //integer is a direction. 0:up,1:right,2:down,3:left
getTile(y,x); //gets the value of the tile in position y,x on the board. See diagram
Для вашего удобства определены следующие переменные:
eother //boolean, alternates every cycle
frozen //integer, counts how many cycles the board has remained stationary
lastDir //integer, indicates the last direction that was tried to move in
//uses same format as the move method above.
startup //boolean, will always be true when the game first starts
//you can change it as you wish
a
b //a b and c are all persistant variables, they do not change each cycle
c //any other variables defined in the cycle will be reset every time
Правила:
- Нет случайности, вы должны использовать логику. (Да, я знаю, что пример кода использует случайный.)
- Не подключаться к игровым функциям и не обманывать другими способами
- Обычно старайтесь вызывать только один метод перемещения за цикл. Это нормально, если вы используете больше, но это винты с анимацией
- Доска должна начинаться в случайном состоянии, без изменений в состоянии перед игрой
- Вы должны предоставить как несжатую версию, так и версию для гольфа в своем сообщении.
- Вы должны предоставить ссылку на сайт, который уже загружает несжатую версию вашего кода, обслуживаемую через PasteBin (например, ... thatcoolidea.com/2048?i=pH18GWtu загружает пример кода.)
Подсчет очков:
- Ваш код будет оценен мной.
- Часть А вашего счета - это в среднем 3 прогона кода, округленные в меньшую сторону.
- Часть B вашего счета - это длина вашего кода для игры в гольф.
- Ваш окончательный счет - Часть A, разделенная на Часть B
Победитель получит свой код в качестве примера кода на сайте, если он выберет его, и будет подтвержден в комментарии в коде.
Удачи! Надеюсь, вам понравится вызов.
Текущий рекорд 225.22 - Морозильник - user3217109