Как пройти программирование в учи ру сокобан 7 уровень

ChronoShift-это простая пошаговая головоломка. Берущая идеи из [chronotron] 1 и [Sokoban] 2. Патчи и исправления ошибок приветствуются. 🙂 Чтобы пройти уровень. Вы $ . /main.py [путь/к/уровень-или-кампания] Пример: $ . /main.py

  • или — $ ./main.py levels/tutorial01.txt
  • или — $ ./main.py уровни/campaign.lsf

(По умолчанию) Кеймапинги следующие:

  • WASD (или клавиши со стрелками) для перемещения
  • Пробел для пропуска поворота
  • Enter для входа в машину времени (активный клон должен быть на машине времени)
    • Прыжок во времени
  • F2 для печати выполненных действий (в
    • Одна строка на клон.

Имейте в виду, что попытка сделать

незаконный шаг будет считаться действием!

Все допустимые действия выполняются

Цель состоит в том, чтобы получить цель (показанную в виде дома банкомата) и вернуться к началу (выделенная голубоватая земля). Решение должно быть детерминированным и не вызывать временных парадоксов!

Парадокс времени и недетерминизм

Есть два способа провалить уровень. Один пытается вызвать недетерминизм, а другой-вызвать парадокс времени.

Недетерминизм может возникнуть, если два разных действия в одном и том же повороте действительны сами по себе, но оба не могут произойти. Это может произойти, если два клона пытаются толкать один и тот же ящик в ортогональных направлениях (параллельные направления

Обратите внимание, что игра сообщает об этих ошибках как о временном парадоксе.

Парадоксы времени возникают, если ваше Если бы он не вернулся в машину времени, он не смог бы стать

Наконец, это решение не может привести к тому, что клон или ящик закончат свой ход на закрытых воротах. Также клон и ящик не могут использовать одно и то же поле в конце хода.

Взаимодействие с игровым миром

В игровом мире есть несколько различных элементов. Которые можно использовать для достижения цели (или встать у вас на пути):

  • поле
    • Поле-это просто квадрат в игровом мире. На нем может быть ящик или 1+ клон(ы).
    • Представлена
  • стена
    • Непроницаем как для ящиков, так и для клонов.
    • Представлен
  • ворота
    • Ворота либо открыты (ведут себя как поле), либо закрыты (ведут себя как стена). Его состояние можно переключать кнопками.
    • Представлен костровым кругом. Она проходима, если огонь погас, и непроходима, если есть огонь.
  • кнопка
    • Кнопка изменяет состояние ворот. Пока на нем находится ящик или клоны 1+, кнопка В противном случае он деактивируется.
    • Представлен небольшим кругом, который либо
  • клеть
    • Толкаемая стена. Его толкают те же правила, что и Сокобана.
    • Представлен ящиком.
  • машина времени
    • Машина времени-это место начала.
    • Представлена фиолетово-черной плиткой.
  • цель
    • Поле, которое вы должны получить.
    • Представлен золотой монетой (исчезнет при получении)

Пара намеков:

  • Кнопки могут воздействовать на несколько ворот.
  • Две (или более) кнопки могут управлять одними и теми же воротами.
  • Две кнопки, управляющие одними и теми же воротами, будут гасить друг друга, если обе активированы.
    • Это правило обобщается как
  • Ящики не нужно отодвигать назад, чтобы начать.

Счет

Как и в некоторых играх Сокобан, вы оцениваетесь по количеству сделанных ходов. Таким образом, более низкий балл лучше (то есть эффективнее), чем высокий.

Правила подсчета очков таковы:

  • 1 очко за ход или пропущенный ход
    • Вход в машину времени считается движением.
  • 1 очко за пропущенный ход, пока текущий клон находится вне машины времени.
    • 0 очков за пропущенный ход, пока текущий клон находится внутри машины времени.
  • 1 балл за каждый клон в ящике (после первого).

Фактический счет, отображаемый игроку, передается по формуле, чтобы он упал со 100 до 0.

В настоящее время нет реального процесса установки. Известны следующие зависимости:

  • python 2.7
  • pygame
  • пгу-0.18 (встроенный)

Пакеты Debian/Ubuntu для них:

  • python2.7
    • Debian/Wheezy или
  • python-pygame

Примечание: Даже если у вас есть python2.7, ваш файл /usr/bin/python может указывать на python2.6. Если это так, замените его:

$ . /main.py [путь/к/уровень-или-кампания]

с

$ python2.7 ./main.py [путь/к/уровню-или-кампании]

Написание уровня можно сделать простым вводом уровня. Этот формат таков:

  • Первая строка должна быть

  • Строка 2 до первой пустой строки-это представление карты (в ASCII). Каждая линия должна иметь одинаковую ширину, и они должны быть повсюду на карте. Доступны следующие глифы:

    • » (то есть пространство) — это поле
    • — …это закрытые ворота
    • ‘B’ — это кнопка, которая может быть активирована только ящиком (не реализован atm)
    • ‘o’-это
    • ‘c’ — поле с ящиком на нем
    • ‘G’ — поле цели
  • После репрентации идет секция для соединения кнопок с воротами. Этот раздел можно опустить, если он не нужен и никакой раздел не следует за ним. Поддерживаются следующие правила:

    • — ничего
      • Полезно, если правила не нужны, но раздел следует за этим разделом.
      • Соединяет кнопку at (x1, y1) с затвором on (x2, y2). Верхний левый угол представления равен (0, 0).
      • ПРИМЕЧАНИЕ:
  • Последний раздел-это метаданные Он использует синтаксис управляющих файлов Debian (аналогично почтовым заголовкам) и состоит не более чем из одного абзаца. Его можно опустить, если в нем нет необходимости. Следующие поля имеют определенный смысл.

    • Описание
      • Краткое удобочитаемое описание уровня. Он может быть представлен до того, как будет сыгран уровень.
    • Решение
      • Решение проблемы на уровне (см. Это также используется для тестирования игры.

Формат решения

Поле решения карт (если оно имеется) состоит из ряда Пробелы (и обязательное Кодировка выглядит следующим образом:

    • Следующее действие затем предназначено для следующего клона.

Для удобства чтения решения обычно форматируются с помощью