Курсовая работа: Разработка программы игры "Собери картинку"
Игра предназначена для детей дошкольного и младшего школьного возраста. Игра "Собери картинку" учит складывать целое изображение из частей, развивает зрительное восприятие и произвольное внимание. Также игра позволяет знакомить детей с картинками, описывающими окружающий мир с целью его познания.
Эту программу можно использовать при обучении пользованию мышкой для детей с двигательными нарушениями.
Программа может быть использована также любым пользователем для отвлечения от основной работы с целью отдыха.
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