В духе повторной реализации классических видеоигр , я хотел бы предложить сообществу создать свою лучшую реализацию Tetris .
Для справки - скриншот официальной версии NES тетриса.
Обязательные функции
- Должна существовать разумная система подсчета очков, которая вознаграждает за многострочное выравнивание больше, чем однострочное. Текущий счет должен быть виден постоянно.
- Следующая часть, которая появится, должна быть указана каким-то образом.
- Распределение семи тетромино должно быть достаточно равномерным (то есть псевдослучайно выбранным).
- Пользователь должен иметь возможность вращать текущую фигуру в обоих направлениях, а также ускорять ее спуск.
- Когда игра закончилась, должно быть четко указано, что игра окончена.
- Исходный код должен быть структурирован и легко понятен.
Дополнительные возможности
- Повышение скорости падения после определенного количества прохождений (то есть повышение уровня сложности) и повышение оценки за линию ясно, пропорционально скорости.
- Сила тяжести. Вы можете выбрать «классическую» гравитацию, при которой блоки могут оставаться плавающими в промежутках, или вы можете выбрать «заполнение потоком» гравитации, в которой блоки, которые были отделены от своего первоначального тетромино через линии очистки, могут выпасть в открытую. пробелы.
- Высокие оценки с вводом имени.
- Анимация после очистки линии и / или после получения нового рекорда.
Ограничения
- Любые используемые библиотеки ( jQuery , PyGame и т. Д.) Должны быть свободно доступны.
- Размер исходного кода не должен превышать 4096 байт, за исключением пробелов и комментариев. Любые внешние ресурсы (файлы данных, изображения и т. Д.) Будут добавлены к длине кода, исключая любые файлы, которые создаются, например, для высоких результатов.
Я понимаю, что это довольно произвольное ограничение; моя основная цель - не допускать вставки копий существующих реализаций и поощрять краткость и самодостаточность.
Критерии победы
Этот конкурс будет оценен как конкурс популярности , а это означает, что победителем будет выбран вариант с наибольшим количеством голосов. При голосовании я призываю пользователей подавать любые и все предложения, которые, по их мнению, адекватно отвечают вышеуказанным требованиям.
Победитель будет выбран не ранее, чем через 2 недели после первого действительного решения. Кроме того, я буду предоставлять награду победителю, примерно пропорциональную количеству голосов, полученных за этот вопрос ( 10 * #votes
округляется в большую сторону до ближайших 50). Если после двухнедельного периода будет ничья, период соревнования будет продлен на одну неделю. Если еще будет ничья, я оставляю за собой право провести окончательное голосование.
Пожалуйста, попросите каких-либо разъяснений. Пусть победит лучшая реализация!
Ответы:
Попробуйте: http://tetris.muehe.org
Обновление Есть глобальная высокая оценка. Наслаждайтесь избиением или - альтернативно - взломом :-)
CoffeeScript и HTML-версия должны соответствовать требованиям, насколько мне известно (и я никогда не играл в тетрис).
Github https://github.com/henrik-muehe/tetris
особенности
источник
паскаль
Разработан в FreePascal 2.6.2, должен компилироваться и с Turbo Pascal 6.0. Используется только блок Crt , никаких внешних ресурсов.
Скриншот
(В Linux в окне XTerm.)
контроль
счет
Уровень начинается с 1 и увеличивается после завершения каждых 25 строк. (Несколько завершенных строк считаются как 1.)
измерение
источник
Ява (Свинг)
Это реализация первого исторического издания Game Boy от Nintendo (c) 1989 года.
Как играть:
Z= повернуть влево
X= повернуть вправо
Left= двигаться влево
Right= двигаться вправо
Down= двигаться вниз (медленно)
Up= повернуть влево (просто для удобства использования)
R= сброс игры
Я избегал использовать более одного класса (потому что мне приходит в голову аспект гольфа). Но теперь он больше не пригоден для игры в гольф в любом случае ... Тем не менее, я сжал и закодировал Base64 один Font-File и один Image-File, так что я могу использовать его в одном-единственном файле класса.
Чтобы запустить его, скопируйте код Java в вашу среду IDE и запустите. Вам не нужны никакие дополнительные библиотеки или ресурсы.
Todos:
Комментарии приветствуются :)
источник
import java.awt.event.KeyAdapter;
и изменитеnew KeyAdapter
наnew java.awt.event.KeyAdapter
.Луа - 2876
Тетрис в терминале, работает на большинстве систем Unix, чистый lua, никаких дополнительных библиотек не требуется.
Управление: Wasd или HJKL, W / K, чтобы бросить, S / J, чтобы вращаться, AD / HL, чтобы двигаться
Скорость увеличивается со счетом, при удалении нескольких строк вы получаете квадрат количества уничтоженных линий.
Это не самое удачное решение для игры в гольф, но я все равно решил немного поиграть в него. Символы новой строки просто соответствуют тексту в 80 столбцов, я не включил их в число символов.
источник
cat
.cat
, я используюC-x
M-c
M-butterfly
...Mathematica
Этот код был написан в Mathematica Xiangdong Wen и на самом деле может быть воспроизведен в веб-браузере здесь: Shape Descender (нажмите на графику, чтобы начать стрелки). Ниже приведен снимок экрана и полный код, что довольно мало для полного веб-приложения этой игры.
Код
источник
С
Я написал это дааааара назад, когда сидел скучно в классе в старшей школе. Предположительно, оригинальный программист написал первую версию тетриса, используя квадратные скобки в качестве блоков, и это казалось достаточно простым, чтобы попытаться воссоздать, не так ли? Я не знал ничего о графическом интерфейсе, поэтому я сделал хорошую старомодную консольную программу. Это было еще до того, как я выучил C ++ и эти надоедливые методы программирования, поэтому код может быть немного грязным. Я в значительной степени только крылатый это.
Он отвечает всем требованиям испытания, за исключением того, что фигура вращается только в одном направлении (по часовой стрелке). Используйте WASD для игры, W вращает фигуру. Полный исходный код и exe можно найти здесь: http://sourceforge.net/projects/tklone/files/tklone/tklone-v1.0/
tetris.c
setPiece.c
источник
Я создал версию JavaScript https://marchingband.github.io/tetris/
источник
dom[p.x][p.y+1].style.background
возвращаютсяblue none repeat scroll 0% 0%
, поэтому никогда не будут равныblue
. Ваше решение действительно, но я бы посоветовал изменить все.style.background
→.style.backgroundColor
для нормальной работы как в Firefox, так и в Chrome.