Тетрис на JavaScript с исходным кодом, который можно твитнуть

    image

    Любопытный пример минимализма продемонстрировал пользователь GitHub c ником Aemkei.

    На скриншоте — известная игра Тетрис, справа — её исходный код. В игре нельзя вращать фигуры, нет подсчета очков — зато она может похвастаться размером JS-кода: менее 140 байт.

    Поиграть можно здесь.

    Github автора c его комментариями.

    UPD: Судя по всему, автор — Мартин Клеппе — занят любимым делом: у него также есть реализации игры «Жизнь» на JavaScript (140 байт) и на Ruby (140 символов).

    Комментарии 55

      +5
      Фигурки переносятся через край стакана, причём на строку выше.
        +3
        Это ничего по сравнению с тем что они могут еще и исчезать =) Зачем качество когда исходник на 140 байт.
          +12
          Задайте жару, покажите класс, утрите нос этим жалким бракоделам, запилите качественно. Со счетом, всеми делами.
            +5
            Да не, Вы что, 140 (1300 на самом деле) байт это ведь круто! А если кто-то сделает это же но в 130 байт, но без движения в право и лево, то это будет еще круче, это же (!!!)130 байт будет!
              +24
              Ну вот. В этом сообщении 190 байт, а это все еще не тетрис.
                +13
                Соглашусь с taliban. Давайте говорить правду. Это не «Тетрис на JavaScript с исходным кодом, который можно твитнуть», а "Движок глючной игры, по принципам немного напоминающий тетрис, который можно твитнуть"

                Ну вот. В этом сообщении 190 байт, а это все еще не тетрис.
                Сперва добейся?
                  –4
                  Сперва добейся?

                  Нет. Не надо хаять и поносить, если не можешь повторить. Ну и всякие про «не мешки ворочать» и другие вещи.
                  Я не говорю, что это идеальный тетрис или что он лишен недостатков. Это просто прикольная штучка демонстрирующая чье-то остроумие и умение нестандартно мыслить. Я так не умею и такое умение у меня вызывает уважение. Я не против правды, я против порицания.
                    +12
                    Сперва добейся?
                    Нет. Не надо хаять и поносить, если не можешь повторить.

                    Это и есть «сперва добейся».
                      –5
                      Хм, для меня это просто конструктивный подход. Критикуешь — предлагай.
                        +1
                        Мне не обязательно быть слесарем, чтобы понять, что вон то 5-е колесо, что стоит поперек еще 4-х вообще-то не нужно. Что за идиотская логика, считать что видеть недочеты и ошибки может только тот, кто может сделать? Все остальные со здравым смыслом не дружат и их мнение не учитывается абсолютно?
                          0
                          Что за идиотская логика, считать что видеть недочеты и ошибки может только тот, кто может сделать?

                          Я разве об этом говорил? Нет. Я говорил о конструктивном подходе. Кто угодно скажет, что «вон то пятое колесо — лишнее» или «ваш сервис — говно», но в этом мало полезного. Если ты видишь проблему — мало просто выкрикнуть, что ты ее видишь. Гораздо лучше и правильнее предложить решение этой проблемы.
                          «Вон то пятое колесо — лишнее! Уберите его, а остальные сделайте сдвоенными для сохранения грузоподъемности» или «ваш сервис — говно! Регистрационная форма слишком сложна (предложения для улучшения), а странички грузятся слишком долго (возможные причины)». Наверное есть разница между этими вещами, правда? И наверное второй подход лучше. Как вы считаете?
                            0
                            Тоесть если я, к примеру, вообще не в курсе, как работает сайт, но страницы у меня грузятся десяток-другой секунд, то мне положено молчать или изучать все возможные способы для исправления этих ошибок? Даже если я простой слесарь из бобруйска, желающий просто что-то нагуглить.
                            Или может мне сейчас пойти выучить JavaScript, чтобы написать свой тетрис, вместо того, чтобы просто указать на ошибки в игре?
                            Если регистрационная форма слишком сложна, то это забота юзабилити дизайнера, а не пользователя, который с десятой попытки никак не может верно ее заполнить, не так ли? И пользователь должен предлагать и исправлять их?
                              0
                              Тоесть если я, к примеру, вообще не в курсе, как работает сайт, но страницы у меня грузятся десяток-другой секунд, то мне положено молчать или изучать все возможные способы для исправления этих ошибок?

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

                              Или может мне сейчас пойти выучить JavaScript, чтобы написать свой тетрис, вместо того, чтобы просто указать на ошибки в игре?
                              Одно дело просто указать на ошибки, другое дело критиковать и высмеивать.
                                0
                                Первый комментарий, на который вы ответили и указал на ошибки. В ответ на что, вы предложили самим исправить их.
                                  0
                                  Он бы просто указывал на ошибки если бы ограничивался вот этим
                                  Это ничего по сравнению с тем что они могут еще и исчезать
                                    –1
                                    Ой, извините, я забыл, что высказывать свое мнение про то, о чем написано в топике на хабре запрещено. Ведь оценивать может только автор, все остальные негативные комментарии могут быть только от бездарей, которые кроме как написать негативный отзыв не могут больше ничего.
                                      0
                                      Извините, больше не кормлю.
                      +1
                      Это просто прикольная штучка демонстрирующая чье-то остроумие и умение нестандартно мыслить
                      И всё же это не тетрис
                        +2
                        На всякий случай я обьясню свои слова, специально для Вас отдельно: Я не люблю «недоделки», я уважаю качественные продукты, я не люблю недоделки потому что их у меня тоже полно, полно говна которое было бы хорошим если бы хорошо работало. Я люблю законченые продукты, независимо от того сколько в нем строчек кода, хотя и сам минималист. Было бы в этой программке 500 строчек кода, но работала бы она вменяемо, она не стала бы хуже.
                          +3
                          Мне кажется, что вы слишком критичны. Это не какой-то предлагаемый к продаже продукт, это просто забава и разминка для ума. Если бы кто-то смог заставить летать метлу — это бы было практически тоже самое. Тоже было бы прикольно и забавно. Это не было бы удобно, отсутствие шасси и системы спасения, удобного кресла, стюардессы и прохладительных напитков позволили бы сказать о том, что это та самая «недоделка». Просто рассматривать всерьез летающую метлу как средство передвижения — нельзя. Также как нельзя эту игрушку называть полноценным продуктом и выдвигать к ней те же требования, что и к тем самым продуктам.

                          Было бы в этой программке 500 строчек кода, но работала бы она вменяемо, она не стала бы хуже.


                          Она бы стала просто еще одним тетрисом на js и перестала бы быть тетрисом, основная часть которого помещается в один твит. Т.е. перестала бы быть тем, чем изначально задумывалась.
                            –3
                            Если бы кто-то заставил летать метлу, но она переодически падала бы, а иногда вообще пропадала бы, то это было бы тоже самое (она же летает!!!). А если бы метла летала бы всегда и никогда не исчезала (справлялась бы со своей задачей — летать), то это был бы законченый продукт, и тогда это было бы круто!

                            Суть этого тетриса не в 140 символах а в том как он работает, тут нет класических ифов тонны циклов итд, движок полностью написан на смещении, но он глючит и это факт. Лично я не люблю показывать глючные продукты, даже если они сделаны ради забавы.
                              +3
                              но он глючит и это факт.

                              Тут знаете как бывает. Одному баг — другому — фича. Я вот как узнал про выход с другой стороны стал баловаться используя как раз эту особенность. Прикольно!

                              Есть ограничения? Масса. Настоящий тетрис без счета — не тетрис, особенность с выходом за пределы поля, само поле маленькое, фигуры только двух типов — даже если бы не особенность с выходом за пределы поля — все равно можно было бы найти массу недостатков. Нет предела совершенству. Есть то, что есть и в нем узнается тетрис. Мне, например, этого достаточно чтобы не придираться (а я это умею), а просто порадоваться за автора и поудивляться решению.

                              Не стоит все это такого развернутого обсуждения, имхо. Все было сделано для фана, а мы ссоримся. :(
                    –1
                    Могу сделать меньше 100, но фигурки не будут падать, пойдет?
              +6
              Во де javascript нинзя!
                +9
                Новость, достойная хабра!
                  +2
                  Мужик красавчик, но есть небольшой баг с детектором коллизий, поле начинает инвертироваться.
                    +35
                    140 байт это без учета обработчиков нажатия кнопок и прочих прелестей, без которых играть не получится.
                      +2
                      А я всё не мог понять, как он так круто события клавы ловит.
                      +10
                      >который можно твитнуть


                      Только программисты меряются у кого меньше.
                        +7
                        И производители телефонов — у кого тоньше.
                          0
                          И только лишь дизайнеры меряются у кого красивее.
                        +1
                        Завис на 5 минут :)
                          0
                          это чтоб в одну смску влезло?
                          • НЛО прилетело и опубликовало эту надпись здесь
                              +2
                              Кэп подсказывает, что максимальный размер текста 1 SMS в стандарте GSM — 140 байт.
                                0
                                Таблица 7-битной кодировки GSM 03.38 подсказывает что она содержит все необходимые символы, поэтому для смс исходник можно было делать на 160.
                                  +1
                                  *159

                                  >the ESC code counts for one of them, if characters in the high part of the table are used
                            +7
                            Лицензия прекрасна.
                              0
                              Это не он ее придумал, если что:)
                                +4
                                Доработанная Apache.
                                +2
                                Она называется WTFPL, если что.
                                +2
                                Обработка клавиш таки не влезла в твит.
                                  +8
                                  Я ни разу не специалист в JS, но ведь полный исходный код с обработчиками не поместится и в 3 твитта
                                    +8
                                    Первая мысль была «НО КАК?!», пока не посмотрел исходник, где еще куча дополнительного кода :)
                                      +1
                                      Может твитнуть Header'ы декартового дерева?
                                      +1
                                      Очередной js1к =)
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                          +7
                                          Гениальный фон у человека на странице! Залип дольше чем на тетрисе.
                                            +1
                                            neves.suncloud.ru/fractal.htm вот тут 62 байта
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                            0
                                            А люди умудряются гонки в 58 байт уместить. Правда, бинарник твитнуть не выйдет, наверное.
                                              +1
                                              Попробуйте «влево» зажать — и геймовер! Это не игра, не считается!
                                                +3
                                                Губка Менгера — 512 байт, а выглядит впечатляюще.
                                                Построение фракталов — любимая тема хардкорного по размеру кода
                                                  0
                                                  Все что может быть написано на JavaScript – будет написано.
                                                  © Unnamed Developer
                                                    +1
                                                    Ахаха!!! А мне-то несколько дней назад только пришла мысль (но теперь мне понятно, что не мне одному), что может быть возможно создать правила игры в тетрис регулярными выражениями? А вот хороший человек взял и сделал! Не стал ждать, что муза придёт во второй раз!-

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

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