Курсовая работа: Разработка программы для игры Тетрис
От языка программирования C++ языком C# унаследованы следующие механизмы: "перегруженные" операторы, небезопасные арифметические операции с плавающей точкой, а также ряд других особенностей синтаксиса.
Несмотря на весьма существенные различия между компонентной объектной моделью COM (основного стандарта Microsoft для компонентного проектирования и реализации программного обеспечения) и моделью Java Beans, базовым стандартом Sun Microsystems для компонент (зависимой от языка реализации), язык программирования C# имеет довольно много общего с языком Java.
Перечислим наиболее характерные черты сходства языков программирования C# и Java. Прежде всего, оба языка относятся к категории объектно-ориентированных и предполагают единственность наследования. Другими важными особенностями, которые сближают языки программирования C# и Java, являются механизмы интерфейсов, обработки исключительных ситуаций, а также процессов или "нитей" (threads). "Сборка мусора" и пространства имен реализованы в этих двух языках сходным образом. Оба языка программирования характеризуются сильной (строгой) типизацией и динамической загрузкой кода при выполнении программы.
Но несмотря на то, что целый ряд конструктивных синтаксических механизмов и особенностей реализации унаследован языком программирования C# от прародителей (C++ и Java), возможности этого нового языка программирования не ограничиваются суммой возможностей его исторических предшественников.
К числу принципиально важных решений, которые реализованы корпорацией Microsoft в языке программирования C#, можно отнести следующие:
· компонентно-ориентированный подход к программированию (который характерен и для идеологии Microsoft.net в целом);
· свойства как средство инкапсуляции данных (характерно также в целом для ООП);
· обработка событий (имеются расширения, в том числе в части обработки исключений, в частности, оператор try);
· унифицированная система типизации (соответствует идеологии Microsoft.net в целом);
· делегаты (delegate - развитие указателя на функцию в языках C и C++);
· индексаторы (indexer - операторы индекса для обращения к элементам класса-контейнера);
· перегруженные операторы (развитие ООП);
· оператор foreach (обработка всех элементов классов-коллекций, аналог Visual Basic);
· механизмы boxing и unboxing для преобразования типов;
· атрибуты (средство оперирования метаданными в COM-модели);
· прямоугольные массивы (набор элементов с доступом по номеру индекса и одинаковым количеством столбцов и строк).
Приведенные выше особенности языка C# повлияли на выбор языка программирования и соответственно среды.net для программы.
2.2 Блок-схема программы
При создании программного алгоритма "Тетриса" на начальном этапе была разработана блок-схема игры. В ней было описана последовательность работы алгоритма игры (Рис.2).
Рис.2
При запуске приложения "Тетрис" происходит объявления двумерного массива, с последующим его заполнением пустыми значениями. Игра начинается при запуске таймера. Далее происходит выбор фигуры с помощью генератора случайных чисел. В соответствии с выбранной фигурой происходит заполнение первых двух строк массива. Затем происходит вход в цикл падения фигуры. Тело цикла представляет собой сдвиг фигуры на одну строку ниже и проверка на нажатие кнопок "Вправо", "Влево", "Поворот" (при нажатии этих кнопок происходит сдвиг фигуры вправо, влево и поворот вокруг своей оси соответственно). Условие окончания цикла - отсутствие свободного места под фигурой. После выхода из цикла начинается проверка полностью заполненных строк. Если такие имеются, то происходит их очистка и сдвиг всех строк, находящихся выше. Далее происходит новый выбор фигуры и повторение алгоритма. Если же заполненных строк нет, то происходит проверка на свободное место в третьей строке. Если третья строка свободна, то происходит выбор фигуры и выполнение алгоритма цикла. При заполненности третьей строки происходит остановка таймера и вывод результатов игры. Затем происходит выход из игры.
2.3 Вводимые и выводимые данные
Одной из самых важных функций любого языка программирования является предоставление возможностей для управления программой в ручную. Это подразумевает создание пользовательского интерфейса.
Выводимыми данными являются данные сообщаемые пользователю, а вводимыми являются те данные, которые пользователь сообщает программе.
Выводимые данные в программе представлены в виде графического отображения окна игры (Рис.3)
Рис.3
Окно игры.
Вводимыми данными представлены в виде программного кода, который необходимо выполнить при определенных действиях пользователя. А именно:
1) нажатие клавиш Left, Right, Up, Space;