Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.
Аннотация к работе
В данном документе описывается программа, написанная в соответствии с постановкой задачи по теме "Разработка программы для игры "Тетрис"" по дисциплине "Языки и системы программирования". Данная программа осуществляет вывод на экран случайным образом падение различных фигур. Программа может применяться в качестве игровой на разных типах персональных компьютеров. Их можно разделить по функциональности: математическое описание движений фигур; В математической части рассматриваются основные принципы и законы движений фигур.В разделе "Введение" данной курсовой работы была приведена краткая история игры "Тетрис". Все изученные мной примеры этой игры написаны на довольно старых языках программирования (например Basic, Pascal).При разработке программы игры "Тетрис" для описания математической части алгоритма был использован двумерный массив, размерностью 24*15.В языке С# массивы несколько отличаются от массивов в C и других языках, поскольку они являются объектами, что наделяет их полезными методами и свойствами. В С# определен синтаксис объявления объектов типа Array. Таким образом, С# предоставляет программисту идеальные условия: за простым синтаксисом в стиле С кроется объявление класса, дающее экземплярам массива доступ к методам и свойствам класса System. В создании алгоритма использовался массив как математический аналог поля "Тетриса". Следовательно в массиве, ячейки, соответствующие заполненным областям поля, будут иметь логическое значение true.Приложения с графикой, игры, Computer Aided Design/Computer Aided Manufacture (CAD/CAM - проектирование/производство с помощью компьютера), программы для рисования, для создания графиков и многие другие типы приложений требуют от разработчиков написания кода для работы с графикой. Использование создаваемых пользователем управляющих элементов также предполагает работу с графикой. Посредством своей библиотеки классов компания Microsoft сделала написание кода для работы с графикой как никогда простым. Класс Brush находится в пространстве имен System. Обрамляющий прямоугольник определяет, какую порцию рисунка мы должны использовать при рисовании, - использовать весь рисунок целиком совершенно необязательно.Для реализации данного курсовой работы был выбран язык программирования Visual C#. Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода. От языка программирования C языком C# унаследованы следующие механизмы: "перегруженные" операторы, небезопасные арифметические операции с плавающей точкой, а также ряд других особенностей синтаксиса. Несмотря на весьма существенные различия между компонентной объектной моделью COM (основного стандарта Microsoft для компонентного проектирования и реализации программного обеспечения) и моделью Java Beans, базовым стандартом Sun Microsystems для компонент (зависимой от языка реализации), язык программирования C# имеет довольно много общего с языком Java. Но несмотря на то, что целый ряд конструктивных синтаксических механизмов и особенностей реализации унаследован языком программирования C# от прародителей (C и Java), возможности этого нового языка программирования не ограничиваются суммой возможностей его исторических предшественников.При создании программного алгоритма "Тетриса" на начальном этапе была разработана блок-схема игры. При запуске приложения "Тетрис" происходит объявления двумерного массива, с последующим его заполнением пустыми значениями. Далее происходит выбор фигуры с помощью генератора случайных чисел. В соответствии с выбранной фигурой происходит заполнение первых двух строк массива. Тело цикла представляет собой сдвиг фигуры на одну строку ниже и проверка на нажатие кнопок "Вправо", "Влево", "Поворот" (при нажатии этих кнопок происходит сдвиг фигуры вправо, влево и поворот вокруг своей оси соответственно).Одной из самых важных функций любого языка программирования является предоставление возможностей для управления программой в ручную. Выводимыми данными являются данные сообщаемые пользователю, а вводимыми являются те данные, которые пользователь сообщает программе. Выводимые данные в программе представлены в виде графического отображения окна игры (Рис.3)На этапе разработки алгоритма необходимо определить последовательность действий, которые надо выполнить для получения результата. Если задача может быть решена несколькими способами и, следовательно, возможны различные варианты алгоритма решения, то программист, используя некоторый критерий, например, скорость решения алгоритма, выбирает наиболее подходящее решение. После того как определены требования к программе и составлен алгоритм решения, алгоритм записывается на выбранном языке программирования. Составление теста программы, наверное, самый сложный из этапов, требующий наибольшего внимания.Поэтому, при разработки интерфейса пользователя необходимо учесть ряд особенност
План
Оглавление
Задание на курсовую работу
Введение
1. Конструкторский раздел
1.1 Обоснование необходимости разработки
1.2 Обоснование и описание метода алгоритма
1.2.1 Математическая часть алгоритма
1.2.2 Графическая часть алгоритма
2. Технологический раздел
2.1 Выбор языка и среды программирования
2.2 Блок-схема программы
2.3 Вводимые и выводимые данные
2.4 Разработка и отладка текста программы
2.5 Разработка интерфейса пользователя
2.6 Тестирование программы
3. Руководство пользователя
3.1 Программно-аппаратные требования
3.2 Порядок работы с программой
Заключение
Список использованной литературы
Приложения
Введение
В данном документе описывается программа, написанная в соответствии с постановкой задачи по теме "Разработка программы для игры "Тетрис"" по дисциплине "Языки и системы программирования". Данная программа осуществляет вывод на экран случайным образом падение различных фигур. Входными данными является ввод вариантов скорости движения фигур сверху вниз и управление падающими фигурами.
Назначение программы - развлечение играющих, совершенствование их координации и логического мышления. Программа может применяться в качестве игровой на разных типах персональных компьютеров.
История игры Тетрис начинается в июне 1985 года. Тетрис был изобретен Алексеем Пажитновым, а затем был интегрирован на ПК IBM Вадимом Герасимовым. После чего ига Тетрис начала распространяться по всей Москве, а затем уже и по всему миру. Сначала она была доставлена в Венгрию, где венгерские программисты интегрировали Тетрис для Apple II и Commodore 64.
Игра была замечена в мире, и несколько представителей крупных компаний, обращались к автору Тетриса, чтобы купить права на распространение игры. Алексей подписывает контракт с Mirrorsoft UK и Spectrum Holobyte, предоставляя им права на компьютерным версии Тетрис. После того, как первые копии Тетриса для домашних компьютеров были преданны, игра приобрела популярность среди населения и стала самой продаваемой компьютерной игрой в Англии и США в 1988 году.
Существует множество способов реализации данной программы. Их можно разделить по функциональности: математическое описание движений фигур;
графическое отображение движений фигур;
В математической части рассматриваются основные принципы и законы движений фигур. Это самая важная часть программы. От нее зависит правильная работоспособность программы. Для ее реализации можно использовать различные алгоритмы. Например описать движение фигуры двумя линейными функциями. Одна будет отвечать за расположение фигуры по горизонтали, другая по вертикале. Меняя за определенные промежутки времени значения переменных этих функций, будет меняться положение фигуры на плоскости. Третья функция будет отвечать за очистку полностью заполненных горизонталей. Основными недостатками этого способа является объявление большого числа переменных, отвечающих за описание уже упавших фигур, и создание большого числа дополнительных функций, отвечающих за поворот фигур вокруг своей оси.
Другой способ математического описания движения фигур и заполнения поля тетриса - создание двумерной матрицы n*k. Через определенный промежуток времени будет изменяться значения, соответствующие положению фигур на плоскости и уже упавшим фигурам. Т.е. значение матрицы расположенное на n-ой строке и в k-ом столбце, будет соответствовать части фигуры расположенной на n-ой горизонтали и k-ой вертикали.
Приведенные выше способы не являются единственными. Они лишь наиболее популярны в реализации программы "Тетрис" среди программистов.
Для графического отображения фигур и поля тетриса также существует большое количество различных способов. Например, двигать на плоскости уже готовые рисунки фигур "Тетриса". Тогда рисунки фигур будут храниться отдельными графическими файлами в памяти компьютера. Сложность данного способа реализации заключается в отображении уже упавших фигур и отображение повернутой фигуры вокруг своей оси. Для этого придется постоянно создавать новый рисунок поля из рисунков, хранимых в памяти компьютера.
Еще один способ графического отображения фигур и поля тетриса - использование готовых элементов языка программирования. Наиболее часто для этих целей используют таблицы. Изменяя цвет ячеек таблицы через определенные промежутки времени можно отобразить на экране движение фигур и заполненные области поля. Также возможно использование таких элементов, как кнопки, области для надписей (Label). Изменяя их цвет, также можно отобразить движение фигур и заполненные области. Но у такого способа есть огромный минус - объявление большого числа таких элементов.
Так же возможно использование встроенных графических возможностей языка программирования. При рисовании фигур тетриса можно использовать простое изображение квадрата. Для его изображения необходимо знать лишь координаты верхнего левого угла, а также значение ширины квадрата.
При разработки программы для игры Тетрис был использовал объектно-ориентированный язык программирования Visual C#. Математическая часть программы была создана с помощью двумерной матрицы. Графическое отображение было реализовано с помощью графических возможностей языка Visual C#.