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

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



Ссылка на fiddle

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

Карта уровня задается в массиве levelData в начале скрипта.
Используемые символы:
  • 'w' — стенка
  • 'b' — ящик
  • 's' или пробел — свободное место
  • 'y' — игрок
Поделиться публикацией
Ой, у вас баннер убежал!

Ну. И что?
Реклама
Комментарии 25
    +6
    Мне, конечно, очень стыдно, друзья. Но я впервые в жизни узнал про сокобан. Даешь больше уровней!
      0
      Если делать больше уровней, то 30 строк не получится. А поиграть нормально можно например здесь
        0
        Все! План на ближайшую ночь составлен, необходимо восполнить детский пробел отсутствия игры в сокобан.
      +1
      Щас пытался объяснить дизайнеру в чем фишка «написал в 30 строк»… бесполезно :)
      Классно, серьезно ))
        +1
        В чем проблема обьяснить суть писькомерства? Дизайнер девушка что-ли?
          +2
          Нет, парень. На писькомерстве мы и остановились ))
          Просто для меня такой код представляет все же какой-то интерес, хотя суть все равно сводится к «у меня короче»
            0
            Может потому и не понял, что все наоборот?)
            +2
            А в чем проблема объяснить девушке суть сиськомерства?))
              +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
                        Фух.
                        Показалось...
                          +2
                          Фух.
                          Показалось...
                          image
                          :D

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

                        Самое читаемое