Класс TetrisDlg представляет собой класс для управления отображением компонентов главного окна программы, интеграции с второстепенными модулями. Содержится в файлах tetrisdlg.h, tetrisdlg.cpp.
· Void Update() – метод позволяющий обновлять содержимое интерфейса, проверять статус игры.
· Void AdjustFrame() – метод определяющий размеры и свойства игровых окон.
· Void Initialize() – запускает таймер, и генерацию блоков.
· Void UpdateBlock() – выбирает блок из очереди, с определенными параметрами вывода. И переносит его по оси ординат без участия пользователя.
· Void UpdateWindow() – обновляет содержимое окна, элементов интерфейса, выбирает следующую фигуру, поля отображения успеха игрока.
· Void NextRandomBlock() – случайным образом выбирает следующий блок.
· Void NextrandowColor() – случайным образом выбирает следующий цвет.
· Block BlockFromIndex(BYTE i) – метод необходимый для выбора блока, предоставляет создание объекта того типа блока который был выбран.
· Block CheckLine(Byte row) – проверяет целостность всех столбцов поля.
· Void RemoveLine(Byte row) – удаляет линию если она удовлетворяет условию удаления, также здесь описан механизм исчезновения и сдвига необходимых блоков по вертикальной оси.
· Void IsGameOver(Block blockType) – проверяет координаты последнего остановившегося блока, если они подходят под описанные для завершения условия, возвращает TRUE.
· Void GameOver() – при вызове убивает таймер, обновляет статус игры, запрещает использование кнопок.
· Void OnPaint() – меняет статус игры при сворачивании окна.
· Void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) – реализует взаимодействие пользователя с конечной фигурой, определяет по нажатию клавиши перемещение тетромины по полю.
· Void OnLButtonUp(UINT nflags, cPoint point) – определяет по координатам курсора мыши дополнительные параметры игры (пауза, конец, начало, остановка).
· Void OnMouseMove(UINT nFlags, cPoint point) – в зависимости от координат курсора мыши обновляет статус m_mouseOver.
· Void OnTimer(UINT_PTR nIDEvent) – метод для проверки возможности перемещения блоков, удаления строк со сдвигом, статус завершения игры.
· Void OnGameNew() – при вызове начинает игру с обновлением результата и уровня в соответствии с выбором.
· Void OnGamePause() – при вызове убивает таймер, если таймер уже убит, запускает его заново. В начале игры кнопка запрещена для использования.
· Void OnGameStop() – убивает таймер с обнулением результатов.
· Void OnLevelBeginner() – предоставляет возможность выбора легкого уровня сложности.
· Void OnLevelIntermediate() – предоставляет возможность выбора среднего уровня сложности.
· Void OnLevelAdvansed() – предоставляет возможность выбора трудного уровня сложности.
· Void OnLevelExpert() – предоставляет возможность выбора экспертного уровня сложности.
· Void OnLevelDevil () – предоставляет возможность выбора невозможного уровня сложности.
· Void OnLevelHell() – предоставляет возможность выбора последнего уровня сложности. Увеличение сложности реализуется через уменьшение коэффициента периода таймера.
· Void OnGameExit() – при вызове закрывает окно программы
Блок-Схема игры «Тетрис»
Класс BlockL
Данный модуль реализует возможность отображения L-образного блока, предоставляет описание взаимодействия с ним, ось его вращения, методы для проверки передвижения по полю.
L–тетрамино (оно же J) асимметрично и может быть ориентировано 8 способами — 4 поворота и 2 зеркальных отражения.
Рис. 1 (L – тетрамино)
Класс BlockJ
Данный модуль реализует возможность отображения J-образного блока, предоставляет описание взаимодействия с ним, ось его вращения, методы для проверки передвижения по полю.
J–тетрамино (оно же L) асимметрично и может быть ориентировано 8 способами — 4 поворота и 2 зеркальных отражения.
Рис. 2 (J – тетрамино)
Класс BlockO
Данный модуль реализует возможность отображения O-образного блока, предоставляет описание взаимодействия с ним, ось его вращения, методы для проверки передвижения по полю.
О–тетрамино совпадает с собой при зеркальном отражении и при любых поворотах на углы, кратные 90°, и может быть ориентировано единственным образом
Рис. 3 (O – тетрамино)
Класс BlockI
Данный модуль реализует возможность отображения I-образного блока, предоставляет описание взаимодействия с ним, ось его вращения, методы для проверки передвижения по полю.
I–тетрамино имеет две оси симметрии и может быть ориентировано 2 способами — поворотами.
Рис. 4 (I – тетрамино)
Класс BlockS
Данный модуль реализует возможность отображения S-образного блока, предоставляет описание взаимодействия с ним, ось его вращения, методы для проверки передвижения по полю.
S–тетрамино (оно же Z) совпадает с собой при повороте на 180° и может быть ориентировано 4 способами — 2 поворота и 2 зеркальных отражения.
Рис. 5 (S – тетрамино)
Класс BlockT
Данный модуль реализует возможность отображения T-образного блока, предоставляет описание взаимодействия с ним, ось его вращения, методы для проверки передвижения по полю.
T–тетрамино имеет осевую симметрию и может быть ориентировано 4 способами — поворотами.
Рис. 6 (T – тетрамино)
Класс BlockZ
Данный модуль реализует возможность отображения Z-образного блока, предоставляет описание взаимодействия с ним, ось его вращения, методы для проверки передвижения по полю.
Z–тетрамино (оно же S) совпадает с собой при повороте на 180° и может быть ориентировано 4 способами — 2 поворота и 2 зеркальных отражения.