Сокобан на Javascript в 30 строк

Всем привет, решил приобщиться к общему безумию. В 30 строк уже написали почти все, что могли, но старого доброго сокобана я не нашел (возможно, плохо искал), так что хочу восполнить этот пробел.



Ссылка на fiddle

Если кто не в курсе, смысл в том, чтобы затолкать ящики на указанные места. Ящики можно только толкать, тянуть нельзя. Одновременно можно толкать перед собой только один ящик. Стены лабиринта нарисованы черным, ящики — синим, места для ящиков — серым, ящики, стоящие на нужных местах — красным, игрок — зеленым. Управление стрелками курсора.

Карта уровня задается в массиве levelData в начале скрипта.
Используемые символы:
  • 'w' — стенка
  • 'b' — ящик
  • 's' или пробел — свободное место
  • 'y' — игрок
Метки:
Поделиться публикацией
Комментарии 25
  • +6
    Мне, конечно, очень стыдно, друзья. Но я впервые в жизни узнал про сокобан. Даешь больше уровней!
    • 0
      Если делать больше уровней, то 30 строк не получится. А поиграть нормально можно например здесь
      • 0
        Все! План на ближайшую ночь составлен, необходимо восполнить детский пробел отсутствия игры в сокобан.
    • +1
      Щас пытался объяснить дизайнеру в чем фишка «написал в 30 строк»… бесполезно :)
      Классно, серьезно ))
      • +1
        В чем проблема обьяснить суть писькомерства? Дизайнер девушка что-ли?
        • +2
          Нет, парень. На писькомерстве мы и остановились ))
          Просто для меня такой код представляет все же какой-то интерес, хотя суть все равно сводится к «у меня короче»
          • 0
            Может потому и не понял, что все наоборот?)
          • +2
            А в чем проблема объяснить девушке суть сиськомерства?))
        • 0
          Скажите ему, что это то же самое, что нарисовать дизайн сайта одним непрерывным росчерком (ну или двумя-тремя).
          (пример задачек из детства — matematiku.ru/index.php?option=com_content&task=view&id=2552&Itemid=50)
          • 0
            Я привел пример ретуширования фото меньшим количеством телодвижений ))
          • +1
            Это как нарисовать нарисовать картину тремя цветами.
            • +3
              Вспомнил очень хорошую аналогию для дизайнеров
              • 0
                Волшебно =)
                • 0
                  Кто-то показал эту статью в Microsoft?
                  Угадайте, что тут

                  • 0
                    Даже если абстрагироваться от TM, то, по исходным условиям, тут 5 четырехугольников.
                    • +2
                      Четыре: белый фон, голубой и 2 белых 4х-угольника.
                      • 0
                        Ооо, кстати да. Не пришла в голову такая оптимизация.
                      • 0
                        Без ТМ никак нельзя.
                • 0
                  Ах, досада то какая. Все надеялся, сегодня вечером наваять сокобан в 30 строк поддавшись тренду, ан нет, опередили! Поздравляю.
                  Мне кстати, вот такая конструкция по душе для определения направления:

                  { //e- mouse event
                              x : e.keyCode % 2 ? e.keyCode - 38 : 0, 
                              y : !(e.keyCode % 2) ? e.keyCode - 39 : 0 
                  }
                  
                  • 0
                    Согласен, конструкция короче, но она начнет давать веселые смещения на не стрелочных кнопках.
                    • 0
                      Да, надо бы предварительно проверять чтобы в диапазоне с 37 до 40 был.
                  • 0
                    вспомнился «мудрый крот» из «роботландии» :)
                    • +2
                      Фух.
                      Показалось...

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.