Пожалуйста, объясните доходчиво алгоритм игры "Тетрис"?

программирование алгоритм тетрис объяснение разъяснение

Логика игры мне понятна, мне трудно понять - как написать игру с нуля на JavaScript.
Интересуюсь в целях обучения программированию.
Вот на момент, когда фигура появляется в "стакане" и в нём уже лежат некоторые фигуры, образовав какой-то рельеф - как достигается вращение падающей фигуры? Возможные формы заданы заранее? Как осуществляется оценка - до какого слоя упадёт фигура и где зацепится?
Оценку заполнения слоя думаю легко производить - после момента "всё, упала" смотреть по всему стакану на предмет заполненных уровней.

Примечание:
Павел Иванович, не помню чтобы я учл кого-нибудь программированию. Разве что мелочи какие-нибудь.
Поворот полигона в SVG, конечно можно написать на JavaScript, но я намереваюсь сделать всё буквами.
виндовсами не засоряйте эфир. Я отказался от виндовсов больше трёх лет назад и, надеюсь, никогда не возьмусь за эту мерзость, тем более за её API.
Предварительный итог. Варианты:
1. программный поворот при каждом случае (спасибо за подсказку про область вращения фигуры!)
2. предвычисленные варианты вращения
Очевидно, что взять следующий вариант - по часовой или против - быстрее, чем каждый раз поворачивать.
Осталось понять - как вычислить - хватает-ли места на поворот, можно-ли повернуть, не задев окружающие зафиксированные блоки и собственно есть-ли место для падения вниз.
Начнём с последнего - тут можно просто посмотреть на клетки под каждым из нижних квадратов фигуры - если все пусты - падаем.
А вот с оценкой пространства для поворота - сложнее.

Примечание:
Я догадался как оценивать наличие места для поворота. Надо просто наложить на фигуру следующий её вариант и, если он вписывается в пустые клеточки, а "на пути" поворота не было препятствий (отдельная сетка для оценки), то осуществляем поворот.
Undetected: именно в поле "квадратов" (символьных, например буквами "О") и делается в JavaScript. Выберу ваш ответ "лучшим", т.к. он полнее, чем у Crazyzubr.
Crazyzubr ваш ответ тоже ведёт к пониманию.
Спасибо, товарищи, помогли!
Ответы:
хех. как раз искал Angry Video Game Nerd на тему тетриса, но так и не нашел (
Я бы сделал это "квадратами". Стакан -- поле квадратов, фигуры -- определенный набор квадратов. При вращении фигуры некоторые квадраты перемещаются (не все) и производится оценка поля на возможность такого действия (не занята ли соотв. ячейка поля). То же самое, соотв. с падением -- свободные места есть или их нет, если есть, падаем, нет, застываем и заполняем соотв. ячейки как занятые. Ну вот как-то так, навскидку...
Ну Вы даете. А еще где-то на страницах этого ВиО учили меня программированию. (или то был спор про советский союз?...) Советую принцип работы тетриса пытаться изучить не при написании программ на JavaScript, а используя WinAPI и ее стандартную библиотеку GDI. Вращение фигур достигается путем простого поворота (транспонирования) блока фигур (или отдельного полигона) вокруг своей оси.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.