Разработка программы игры "Собери картинку"

2



Федеральное Государственное образовательное учреждение

Калачевский техникум-интернат

Федерального Агентства по Здравоохранению и Социальному обеспечению













КУРСОВАЯ РАБОТА

По дисциплине

"Технология разработки программных продуктов"

тема: "Разработка программы игры "Собери картинку""







Выполнил студент

группы Т-43

Шипаев Ю.Н.

Специальность №230105

"Программное обеспечение 

вычислительной техники автоматизированных систем"

Преподаватель: Логачёва Е.Г.











Калач-на-Дону 2010 г.


Содержание



Введение

1. Разработка эскизного и технического проекта программы

1.1 Назначение и область применения

1.2 Технические характеристики

2. Разработка рабочего проекта

2.1 Разработка программы

2.2 Спецификация программы

2.3 Описание программы

2.4 Тестирование программы

Заключение

Список литературы


Введение



Все, кто имеет дело с компьютером, так или иначе сталкивались с компьютерными играми, и подавляющее большинство может сходу назвать несколько игр, которые им особенно понравились. Те, кто уже совсем наигрался, почти наигрался или еще не наигрался, но в процессе общения с компьютером уже начал совмещать игры с чем-нибудь более полезным, возможно, хотели бы придумать какие-нибудь свои, не похожие ни на какие другие игры.

Многое захватывает в таком творчестве. И не сам процесс игры, а разработка игровой вселенной, ее проектирование и реализация. Когда можно слить воедино сценарий, графику, музыку, искусно задуманный и умело запрограммированный алгоритм - создать единый фантастический мир, живущий по законам, которые ты же для него и придумал. В последнее время в общем объеме вновь создаваемого программного обеспечения различного назначения увеличивается доля net-приложений - программ, ориентированных на платформу Microsoft.net. Это объясняется, прежде всего, новыми возможностями, которые предоставляет платформа прикладным программам, а также тем, что технология.net поддерживается новейшими операционными системами.

Microsoft.net - это технология, в основе которой лежит идея универсального программного кода, который может быть выполнен любым компьютером, вне зависимости от используемой операционной системы. Универсальность программного кода обеспечивается за счет предварительной (выполняемой на этапе разработки) компиляции исходной программы в универсальный промежуточный код (CIL-код, Common Intermediate Language), который во время загрузки транслируется в выполняемый. Преобразование промежуточного кода в выполняемый осуществляет JIT-компилятор (от Jast In Time - в тот же момент, "на лету"), являющийся элементом виртуальной выполняющей системы (Virtual Execution System, VES). Работу.net-приложений в операционной системе Windows обеспечивает Microsoft.net Framework.

Цель работы: разработать программу игры "Собери картинку".

Для достижения поставленной цели в работе решались следующие задачи:

разработать эскизный и технический проект программы;

разработать рабочий проект программы.

Программа игры "Собери картинку" написана в среде программирования Microsoft Visual C#.

Среда разработки Microsoft Visual C# является инструментом разработки net-приложений для Windows. В ней интегрированы удобный дизайнер форм, специализированный редактор кода, отладчик, мастер публикаций и другие компоненты, необходимые программисту.


1. Разработка эскизного и технического проекта программы



1.1 Назначение и область применения



Программа игры "Собери картинку" - графический вариант хорошо известной игры "15". Ее цель - расположить фишки (фрагменты картинки) в правильном порядке. Это логически не сложная и достаточно простая в управлении и использовании программа.

Игра предназначена для детей дошкольного и младшего школьного возраста. Игра "Собери картинку" учит складывать целое изображение из частей, развивает зрительное восприятие и произвольное внимание. Также игра позволяет знакомить детей с картинками, описывающими окружающий мир с целью его познания.

Эту программу можно использовать при обучении пользованию мышкой для детей с двигательными нарушениями.

Программа может быть использована также любым пользователем для отвлечения от основной работы с целью отдыха.



1.2 Технические характеристики



Смоделировать логическую игру "Собери картинку" так, чтобы программа случайным образом располагала на игровом поле фрагменты картинки и одну пустую клеточку.

К логическим (иногда их называют еще классическими) играм, относятся в первую очередь те, с помощью которых человечество коротало вечера до изобретения компьютера. Это карточные игры, игры со словами и настольные игры: шахматы, шашки, нарды, крестики-нолики, маджонг, разнообразные пасьянсы. В последнее время к "классике" стали также относить и простейшие компьютерные игры раннего периода, например "15", "Собери картинку" тетрис, "Сапер" (Minesweeper) или Bust-A-Move.

Программа "Собери картинку" разбивает картинку на фрагменты и предлагает их собрать. Игра умеет работать с файлами расширения bmp. Играющий, используя резервную клеточку, с помощью мыши перемещает фишки с фрагментами картинки таким образом, чтобы собрать целостную картинку.

Программа располагает на экране игровое поле размером 4*4. На поле расположены случайным образом фрагменты картинки, которые программа получает путем разбиения картинки, находящейся в файлах изображения (BMP) и одна пустая клеточка, в которую игрок может помещать нужный фрагмент картинки. Фрагменты картинки располагаются случайным образом.

Фишка, которую пользователь собирается переместить, должна располагаться рядом с пустой клеточкой. Если данное условие выполняется, то игрок может переместить фишку в пустую клетку, иначе игрок выбирает новую фишку. Игра продолжается до тех пор, пока игрок не соберет картинку, либо не пожелает выйти из игры досрочно.

В процессе игры программа должна фиксировать число перемещений фишек сделанных игроком. После того, как картинка будет собрана, программа сравнивает результат с другими результатами и, если он превосходит один из рекордов, то сразу заносится в таблицу результатов.

Картинка хранится в файле изображения (BMP), который при начале игры загружается. Выходные данные помещаются в двухмерный массив, который выводится на экран.

Программа сделана на языке С# в качестве net-приложения. Процесс создания программы состоит из двух шагов: сначала создается форма, затем - функции обработки событий.

Форма создается путем добавления необходимых компонентов и последующей их настройки.

Основную работу в программе выполняют функции обработки.

Для написания программ на языке C# понадобятся:

1. Пакет Microsoft.net Framework 3.5 Это платформа, которая включает все необходимое для создания и запуска программ - библиотеки классов, компоненты и среду, где ваши приложения будут исполняться.

2. Среда разработки, для.net Framework. Среда разработки нужна для того, чтобы сделать процесс работы максимально удобным. Мы рекомендуем Microsoft Visual C# 2008 Express Edition. Если Visual C# 2008 Express уже содержит.net Framework, выполнять пункт 1 не нужно.

Программы на C# можно писать и в простом текстовом редакторе (например, в Блокноте) и компилировать (т.е. преобразовывать программный код в набор команд, понятных компьютеру) при помощи так называемого "Компилятора C#", входящего в состав.net Framework. Однако целесообразно использовать Visual C# Express - упрощенную среду для разработки на языке C#. В ней можно разрабатывать и приложения для Windows, и консольные приложения с текстовым интерфейсом пользователя. Visual C# Express упростит процесс постижения программирования.


2. Разработка рабочего проекта



2.1 Разработка программы



Программа имеет имя Kursova. Разработка программы начинается с описания используемых входных данных, в частности, задается размер игрового поля 4х4, который хранится в именованных константах nw и nh. Затем задается графическая поверхность формы с помощью метода System. Drawing. Graphics, описываем картинку, используя метод Bitmap. Далее задаем переменные, в которых будет храниться высота и ширина клетки и переменные, в которых будут храниться координаты пустой клетки. Игровое поле хранит номера фрагментов картинки. Признак отображения номера фишки сначала задается как false.

Далее в программе описываются методы. С помощью метода Form1 () загружаем картинку из файла типа bmp. Определяем высоту и ширину клетки (фишки):



cw = (int) (pics. Width / nw);

ch = (int) (pics. Height / nh);



Устанавливаем размер клиентской (внутренней) области формы: this. ClientSize = new System. Drawing. Size (cw * nw + 1, ch * nh + 1 + menuStrip1. Height); и определяем ее как рабочую графическую поверхность g = this. CreateGraphics ();

Метод private void newGame () начинает новую игру, располагает фишки в правильном порядке, последнюю фишку делаем пустой.

Метод private void mixer () перемещает фишки. В переменной d храним положение (относительно пустой) перемещаемой клетки: 0 - слева; 1 - справа; 2 - сверху; 3 - снизу. Функция Random () генерирует случайные числа от 1 до 15, в соответствии с которыми располагаются фрагменты картинки на игровом поле. В цикле for (int i = 0; i < nw * nh * 10; i++), где nw * nh * 10 - кол-во перестановок происходит анализ перемещения фрагментов картинки и определяется фишка, которую нужно переместить в пустую клетку, запоминаем координаты пустой фишки.

Метод private void drawField () обрисовывает поле. С помощью вложенного цикла выводим фишку с картинкой, где ( ( (field [i,j] - 1)% nw) * cw, (int) ( (field [i,j] - 1) / nw) * ch) - координаты левого верхнего угла области файла-источника картинки, затем выводим пустую фишку, рисуем границы и определяем номер перемещаемой фишки.

Метод private Boolean finish () проверяет, расположены ли фишки в правильном порядке. фишки расположены правильно, если числа в них образуют матрицу:



1 	2 	3 	4

5 	6 	7 	8

9 	10 	11 	12

13 	14 	15



Метод private void move (int cx, int cy) перемещает фишку, на которой сделан щелчок, в соседнюю пустую клетку: (cx, cy) - клетка, в которой сделан щелчок, (ex, ey) - пустая клетка. Сначала проверим, возможен ли обмен и, если возможен, то перемещаем фишку из (x, y) в (ex, ey). Затем отрисовываем поле. После окончания игры программа предлагает сыграть еще раз: No - завершить работу программы, Yes - новая игра. С помощью функции MessageBox. Show выводится сообщение "Поздравляю! Вы справились с поставленной задачей!. Еще раз?", "Собери картинку". Функция MessageBoxButtons. YesNo позволят ответить Да или Нет.

С помощью private void Form1_MouseClick (object sender, MouseEventArgs e) обрабатывается щелчок кнопкой мыши на игровом поле, то есть преобразуются координаты мыши в координаты клетки.

Метод private void новаяИграToolStripMenuItem1_Click (object sender, EventArgs e) начинает новую игру.

Листинг программы приведен в приложении 1.



2.2 Спецификация программы



Основные требования:

загрузка картинки из файла изображения. BMP;

разбиение картинки на 15 фрагментов и расположение их случайным образом на игровом поле 4х4, для чего использовать генератор случайных чисел;

последняя ячейка игрового поля должна быть свободной, она используется для помещения в нее фрагмента картинки;

фрагмент может быть перемещен в пустое поле, если он находится рядом с пустой клеткой;

использовать классы, методы и функции C#;

ввод исходных данных производить из файла изображения;

вывод данных производить в матрицу;

закончить игру, когда картинка будет собрана;

предложить начать новую игру или закончить игру.



2.3 Описание программы



Программа "Собери картинку" разбивает картинку на фрагменты и предлагает их собрать. Игра умеет работать с файлами расширения bmp. Играющий, используя резервную клеточку, с помощью мыши перемещает фишки с фрагментами картинки таким образом, чтобы собрать целостную картинку.

Программа располагает на экране игровое поле размером 4*4. На поле расположены случайным образом фрагменты картинки, которые программа получает путем разбиения картинки, находящейся в файлах изображения (BMP) и одна пустая клеточка, в которую игрок может помещать нужный фрагмент картинки. Фрагменты картинки располагаются случайным образом.

Фишка, которую пользователь собирается переместить, должна располагаться рядом с пустой клеточкой. Если данное условие выполняется, то игрок может переместить фишку в пустую клетку, иначе игрок выбирает новую фишку. Игра продолжается до тех пор, пока игрок не соберет картинку, либо не пожелает выйти из игры досрочно.

В процессе игры программа должна фиксировать число перемещений фишек сделанных игроком. После того, как картинка будет собрана, программа сравнивает результат с другими результатами и, если он превосходит один из рекордов, то сразу заносится в таблицу результатов.

Картинка хранится в файле изображения (BMP), который при начале игры загружается. Выходные данные помещаются в двухмерный массив, который выводится на экран.



2.4 Тестирование программы



Тестирование игры - это один из ключевых этапов разработки, требующий самого пристального внимания

Разнообразные подходы к тестированию игр на наличие ошибок и совместимость можно разбить на две группы.

Бета-тестирование (тестирование предварительной версии) начинается, когда игра находится на стадии между поздней альфа - и ранней бета-версией, отсюда и название. Этот весьма трудоемкий этап в создании игры "на совести" собственно разработчика и его проводят по-разному. В ряде случаев бета-тестирование доверяют пользователям.

Контроль качества осуществляется специалистами по тестированию, не имеющими отношения к разработке игры и не являющимися игроками. Он проводится по спецификации выпуска продукта, определяющей поддерживаемые конфигурации аппаратного и программного обеспечения, и завершает собой производственной цикл создания игры. Перед выпуском игры анализируются также присланные сообщения об ошибках и другие замечания. После выхода игры в свет группа технической поддержки рассматривает жалобы пользователей, а разработчики внимательно изучают группы новостей и веб-форумы. В результате составляется и систематизируется список замечаний, на базе которого выпускается первый патч.

Тестируя игры, следует придерживаться трех важнейших правил: а) не отлынивать от тщательного описания ошибок и всегда заносить ошибки в базу данных; б) прежде чем зафиксировать ошибку, необходимо тщательно исследовать проблему; в) проверять, проверять и еще раз проверять.

Для тестирования созданной программы "собери картинку" ее достаточно запустить и убедиться, что программа разбивает картинку на 15 фрагментов и располагает их случайным образом на игровом поле. Далее, убедиться, что программа реагирует на мышь и перемещает фрагменты в нужном порядке и, в конце концов, достигается требуемый результат - картинка собрана.

Результатом тестирования является также выявление недостатков в самом проекте данной игры. А именно, программа работает только с одной картинкой, чтобы заменить картинку необходимо в исходнике заменить имя загружаемого файла и снова откомпилировать программу. Игрок не может выбрать картинку, которую он хотел бы собрать. Программа работает только с одним типом файла изображения bmp. Программа не имеет меню для выбора необходимого файла и не предоставляет справочной информации. Кроме того, программа не предоставляет возможность выбрать, на сколько фрагментов разбивать картинку, а всегда разбивает на 15 фрагментов. Программа также не имеет уровней сложности.


Заключение



Разработка программы "Собери картинку" показывает, что данный процесс требует значительных творческих и умственных усилий, наличия определенного объема знаний по программированию на языке C# и умелого использования этих знаний.

Кроме того, важными моментами при разработки программы являются описание спецификации программы, алгоритма ее реализации, хотя C# и предоставляет необходимые средства для упрощения процесса программирования.

Проведенное тестирование программы позволяет сделать вывод о работоспособности программы и ее соответствии заданию. Выявленные недостатки предполагают дальнейшую работу над совершенствованием программы, что предоставляет начинающему программисту обширное поле деятельности для повышения знаний и совершенствовании навыков программирования на Си Шарп, освоении новых аспектов программирования в современной среде.net.

В результате учета всех отмеченных при тестировании недостатков возможно улучшение созданного программного продукта, на которое потребуется необходимое количество изменений исходного кода программы.


Список литературы



Агуров, П.В. C#. Сборник рецептов / П.В. Агуров. - СПб.: БХВ-Петербург, 2007. - 411 с.

Буткевич, Е. Пишем программы и игры для сотовых телефонов /Е. Буткевич. - СПб.: Питер, 2006. - 204 с: ил.

Дрейер, М. C# для школьников: Учебное пособие / М. Дрейер. Перевод с англ. под ред.В. Биллига - М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2009. - 128 с.: ил., табл. - (Лицей информационных технологий).

Жарков, В.А. Компьютерная графика, мультимедиа и игры на Visual C# 2005 /В.А. Жарков. - М.: Жарков Пресс, 2005. - 812 с.

Зубкова, Т.М. Технология разработки программного обеспечения: Учебное пособие /Т.М. Зубкова. - Оренбург: ГОУ ОГУ, 2004. - 101 с.

Культин, Н.Б. C# в задачах и примерах /Н.Б. Культин. - СпБ.: БХВ-Петербург, 2007. - 241 с.

Лабор, В.В. Си Шарп: Создание приложений для Windows / В.В. Лабор. - Мн.: Харвест, 2003. - 384 с.

Лунгу, К.Н. Линейное программирование: Руководство к решению задач /К.Н. Лунгу. - М.: ФИЗМАТЛИТ, 2005. - 128 с.

Мак-Дональд, Мэтью. Microsoft ASP.net 3.5 с примерами на C# 2008 для профессионалов, 2-е изд.: Пер. с англ. / Мак-Дональд, Мэтью, Шпушта Марио. - М.: ООО “И.Д. Вильямс", 2008. - 1424 с.: ил.

Павловская Т.А. С#. Программирование на языке высокого уровня: Учебник для вузов /Т.А. Павловская. - СПб.: Питер, 2009. - 432 с: ил.

Степанченко, И.В. Методы тестирования программного обеспечения: Учеб. пособие /И.В. Степанченко. - Волгоград: ВолгГТУ, 2006. - 74 с.

Стефан, Рэнди Дэвис. C# 2005 для "чайников" / Стефан Рэнди Дэвис, Чак Сфер. - М.: ИД Вильямc, 2008. - 576 с.