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.
Основные требования:
загрузка картинки из файла изображения. BMP;
разбиение картинки на 15 фрагментов и расположение их случайным образом на игровом поле 4х4, для чего использовать генератор случайных чисел;
последняя ячейка игрового поля должна быть свободной, она используется для помещения в нее фрагмента картинки;
фрагмент может быть перемещен в пустое поле, если он находится рядом с пустой клеткой;
использовать классы, методы и функции C#;
ввод исходных данных производить из файла изображения;
вывод данных производить в матрицу;
закончить игру, когда картинка будет собрана;
предложить начать новую игру или закончить игру.
Программа "Собери картинку" разбивает картинку на фрагменты и предлагает их собрать. Игра умеет работать с файлами расширения bmp. Играющий, используя резервную клеточку, с помощью мыши перемещает фишки с фрагментами картинки таким образом, чтобы собрать целостную картинку.
Программа располагает на экране игровое поле размером 4*4. На поле расположены случайным образом фрагменты картинки, которые программа получает путем разбиения картинки, находящейся в файлах изображения (BMP) и одна пустая клеточка, в которую игрок может помещать нужный фрагмент картинки. Фрагменты картинки располагаются случайным образом.
Фишка, которую пользователь собирается переместить, должна располагаться рядом с пустой клеточкой. Если данное условие выполняется, то игрок может переместить фишку в пустую клетку, иначе игрок выбирает новую фишку. Игра продолжается до тех пор, пока игрок не соберет картинку, либо не пожелает выйти из игры досрочно.
В процессе игры программа должна фиксировать число перемещений фишек сделанных игроком. После того, как картинка будет собрана, программа сравнивает результат с другими результатами и, если он превосходит один из рекордов, то сразу заносится в таблицу результатов.
Картинка хранится в файле изображения (BMP), который при начале игры загружается. Выходные данные помещаются в двухмерный массив, который выводится на экран.
Тестирование игры - это один из ключевых этапов разработки, требующий самого пристального внимания
Разнообразные подходы к тестированию игр на наличие ошибок и совместимость можно разбить на две группы.
Бета-тестирование (тестирование предварительной версии) начинается, когда игра находится на стадии между поздней альфа - и ранней бета-версией, отсюда и название. Этот весьма трудоемкий этап в создании игры "на совести" собственно разработчика и его проводят по-разному. В ряде случаев бета-тестирование доверяют пользователям.
Контроль качества осуществляется специалистами по тестированию, не имеющими отношения к разработке игры и не являющимися игроками. Он проводится по спецификации выпуска продукта, определяющей поддерживаемые конфигурации аппаратного и программного обеспечения, и завершает собой производственной цикл создания игры. Перед выпуском игры анализируются также присланные сообщения об ошибках и другие замечания. После выхода игры в свет группа технической поддержки рассматривает жалобы пользователей, а разработчики внимательно изучают группы новостей и веб-форумы. В результате составляется и систематизируется список замечаний, на базе которого выпускается первый патч.
Тестируя игры, следует придерживаться трех важнейших правил: а) не отлынивать от тщательного описания ошибок и всегда заносить ошибки в базу данных; б) прежде чем зафиксировать ошибку, необходимо тщательно исследовать проблему; в) проверять, проверять и еще раз проверять.
Для тестирования созданной программы "собери картинку" ее достаточно запустить и убедиться, что программа разбивает картинку на 15 фрагментов и располагает их случайным образом на игровом поле. Далее, убедиться, что программа реагирует на мышь и перемещает фрагменты в нужном порядке и, в конце концов, достигается требуемый результат - картинка собрана.
Результатом тестирования является также выявление недостатков в самом проекте данной игры. А именно, программа работает только с одной картинкой, чтобы заменить картинку необходимо в исходнике заменить имя загружаемого файла и снова откомпилировать программу. Игрок не может выбрать картинку, которую он хотел бы собрать. Программа работает только с одним типом файла изображения bmp. Программа не имеет меню для выбора необходимого файла и не предоставляет справочной информации. Кроме того, программа не предоставляет возможность выбрать, на сколько фрагментов разбивать картинку, а всегда разбивает на 15 фрагментов. Программа также не имеет уровней сложности.
Разработка программы "Собери картинку" показывает, что данный процесс требует значительных творческих и умственных усилий, наличия определенного объема знаний по программированию на языке C# и умелого использования этих знаний.
Кроме того, важными моментами при разработки программы являются описание спецификации программы, алгоритма ее реализации, хотя C# и предоставляет необходимые средства для упрощения процесса программирования.
Проведенное тестирование программы позволяет сделать вывод о работоспособности программы и ее соответствии заданию. Выявленные недостатки предполагают дальнейшую работу над совершенствованием программы, что предоставляет начинающему программисту обширное поле деятельности для повышения знаний и совершенствовании навыков программирования на Си Шарп, освоении новых аспектов программирования в современной среде.net.
В результате учета всех отмеченных при тестировании недостатков возможно улучшение созданного программного продукта, на которое потребуется необходимое количество изменений исходного кода программы.
1. Агуров, П.В. C#. Сборник рецептов / П.В. Агуров. - СПб.: БХВ-Петербург, 2007. - 411 с.
2. Буткевич, Е. Пишем программы и игры для сотовых телефонов /Е. Буткевич. - СПб.: Питер, 2006. - 204 с: ил.
3. Дрейер, М. C# для школьников: Учебное пособие / М. Дрейер. Перевод с англ. под ред.В. Биллига - М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2009. - 128 с.: ил., табл. - (Лицей информационных технологий).
4. Жарков, В.А. Компьютерная графика, мультимедиа и игры на Visual C# 2005 /В.А. Жарков. - М.: Жарков Пресс, 2005. - 812 с.
5. Зубкова, Т.М. Технология разработки программного обеспечения: Учебное пособие /Т.М. Зубкова. - Оренбург: ГОУ ОГУ, 2004. - 101 с.
6. Культин, Н.Б. C# в задачах и примерах /Н.Б. Культин. - СпБ.: БХВ-Петербург, 2007. - 241 с.
7. Лабор, В.В. Си Шарп: Создание приложений для Windows / В.В. Лабор. - Мн.: Харвест, 2003. - 384 с.
8. Лунгу, К.Н. Линейное программирование: Руководство к решению задач /К.Н. Лунгу. - М.: ФИЗМАТЛИТ, 2005. - 128 с.
9. Мак-Дональд, Мэтью. Microsoft ASP.net 3.5 с примерами на C# 2008 для профессионалов, 2-е изд.: Пер. с англ. / Мак-Дональд, Мэтью, Шпушта Марио. - М.: ООО “И.Д. Вильямс", 2008. - 1424 с.: ил.
10. Павловская Т.А. С#. Программирование на языке высокого уровня: Учебник для вузов /Т.А. Павловская. - СПб.: Питер, 2009. - 432 с: ил.
11. Степанченко, И.В. Методы тестирования программного обеспечения: Учеб. пособие /И.В. Степанченко. - Волгоград: ВолгГТУ, 2006. - 74 с.
12. Стефан, Рэнди Дэвис. C# 2005 для "чайников" / Стефан Рэнди Дэвис, Чак Сфер. - М.: ИД Вильямc, 2008. - 576 с.