Курсовая работа: Разработка программы для игры Тетрис
Математическая часть алгоритма строится на минимальном числе элементов: двумерный массив, таймер, логическая переменная, циклическая конструкция и условная конструкция (Листинг 1). Синтаксис записи этих элементов в языке C# прост, что делает алгоритм достаточно простым.
1.2.2 Графическая часть алгоритма
GDH+ - интерфейс графических устройств. Приложения с графикой, игры, Computer Aided Design/Computer Aided Manufacture (CAD/CAM - проектирование/производство с помощью компьютера), программы для рисования, для создания графиков и многие другие типы приложений требуют от разработчиков написания кода для работы с графикой. Использование создаваемых пользователем управляющих элементов также предполагает работу с графикой. Посредством своей библиотеки классов компания Microsoft сделала написание кода для работы с графикой как никогда простым.
Возможности GDI +:
· Работу с отдельными частями рисунков
· Рисование изображения
· Вывод на печать
· Предварительный просмотр
· Пространство имен Drawing2D
· Пространство имен Imaging
В классе Graphics инкапсулированы поверхности рисования GDI+. Есть три основных типа поверхностей рисования:
· Окна и управляющие элементы на экране
· Страницы, посылаемые на принтер
· Растровые изображения в памяти
Игра тетрис требует изображение областей поля в виде в квадратов. Для этого была использована структура языка C# Rectangle (прямоугольник). Для ее описания необходимы координаты верхнего левого угла прямоугольника (что соответствует значениям вертикали и горизонтали поля игры), а также его размеры. Структура Region позволяет объединять разные изображения в одно.
Для заполнения определенной области рисунка цветом возможно использование класса Brush . Класс Brush - это абстрактный класс. Для создания экземпляра класса Brush исользуются классы, производные от класса Brush, такие как SolidBrush, TextureBrush и LinearGradientBrush. Класс Brush находится в пространстве имен System. Drawing. Классы TextureBrush и LinearGradientBrush находятся в пространстве имен System. Drawing. Drawing2D. Вот что позволяет делать каждый из этих классов:
· SolidBrush заполняет фигуру сплошным цветом.
· TextureBrush позволяет заполнять фигуру рисунком, хранящемся в двоичном представлении. При создании такой кисти требуется также задавать обрамляющий прямоугольник и режим обрамления. Обрамляющий прямоугольник определяет, какую порцию рисунка мы должны использовать при рисовании, - использовать весь рисунок целиком совершенно необязательно. Для режима обрамления существует несколько возможностей, включая Tile (черепица) - TileFiipx, TileFiipY и TileFiipXY, позволяющих последовательно разбивать изображение на Отдельные квадраты. С помощью TextureBrush можно создавать очень интересные и весьма впечатляющие эффекты.
· LinearGradientBrush содержит кисть, которая позволяет рисовать плавный переход от одного цвета к другому, причем первый цвет переходит во второй под определенным углом. Углы при этом задаются в градусах. Угол, равный 0, означает, что переход от одного цвета к другому осуществляется слева направо. Угол, равный 90°, означает, что переход от одного цвета к другому осуществляется сверху вниз.
Принцип построения изображения поля игры прост. С помощью циклической и условной конструкций проверяется ячейки массива на одинаковые логические значения. Т.к. каждой ячейки соответствует определенная минимальная область поля игры, то зная значение строки и столбца массива возможно построение структуры Rectangle . Объединяя структуры Rectangle одного типа, можно получить два типа Region. Закрашивая эти два Region разными видами "кистей" получаем изображение поля (Листинг 2).
Так как игра тетрис построена на использовании фактора времени, необходимо постоянно графически обновлять поле этой игры. Для этого каждый тик таймера будет происходить приведенный выше принцип построения изображения поля игры.
При разработки программы предполагалось использование среды Microsoft Visual C# 2008 Express Edition. Эта среда разработки программного обеспечения содержит набор шаблонов, которые часто используют при разработки программ. В программе я использовался ряд шаблонов:
· Button
· Label
· PictureBox
· TextBox
· ContextMenuStrip
· Timer
Это облегчило задачу в написании программы, так как часть кода была сгенерирована автоматически.
Приведенные выше принципы и элементы стали основой алгоритма.