Игра «Тетрис» · Шаг 1 из 9
Фигура
Фигура тетриса — это вид (буква: I, J, L, O, S, T, Z), форма — четыре клетки относительно её угла — и место в стакане. Её двигают, поворачивают, пробуют поставить; удобно, когда сдвиг не портит прежнюю фигуру, а даёт новую: тогда можно спокойно примерить ход и передумать.
Что сделать
Опишите фигуру тетриса, которую можно двигать и поворачивать, не портя прежнюю.
Что приходит
vid— буква фигуры:"I","J","L","O","S","T"или"Z"forma— четыре клетки(ряд, столбец)относительно угла фигурыryadиstolbec— где угол фигуры в стакане; если не передали — 0
Что должен уметь
Поля vid, forma (упорядоченная), ryad, stolbec; kletki() — клетки в стакане; sdvig(dr, dc) и povorot(povernut_formu) — новые фигуры, прежняя не меняется.
Допишите класс Figura в редакторе справа.
Проверка создаёт его объекты и зовёт методы — то, что напечатано,
на проверку не влияет.
В игре
Каждая падающая фигура — объект вашего класса: игра двигает её sdvig, поворачивает povorot и рисует по kletki(). Решите шаг — и фигуры начнут поворачиваться по стрелке вверх.
Без этого шага: фигура ходит, но не поворачивается.
Figura("T", [(1, 1), (0, 0), (0, 1), (0, 2)], 3, 4) — фигура «T» с углом в ряду 3, столбце 4. Форма хранится упорядоченной: [(0, 0), (0, 1), (0, 2), (1, 1)], а kletki() прибавляет к ней место: [(3, 4), (3, 5), (3, 6), (4, 5)].
f = Figura("T", [(1, 1), (0, 0), (0, 1), (0, 2)], 3, 4)
(f.vid, f.forma, f.ryad, f.stolbec, f.kletki())
('T', [(0, 0), (0, 1), (0, 2), (1, 1)], 3, 4, [(3, 4), (3, 5), (3, 6), (4, 5)])
Класс Figura(vid, forma, ryad=0, stolbec=0):
- хранит
vid,ryad,stolbecкак есть, аforma— списком кортежей(ряд, столбец), упорядоченным по рядам и столбцам; kletki()— клетки фигуры в стакане: к каждой клетке формы прибавленыryadиstolbec, в порядке формы;sdvig(dr, dc)— НОВАЯ фигура того же вида и формы, сдвинутая наdrрядов иdcстолбцов; прежняя не меняется;povorot(povernut_formu)— НОВАЯ фигура того же вида и на том же месте, с формойpovernut_formu(forma); функцию поворота дают аргументом.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.