Создание игровой программы "WP-Billiards"

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

?е поверхности, которые загружаются один раз в начале программы и не меняют своего содержания (изображения шаров и т.д.), к динамическим относятся поверхности, изображение на которых меняется в зависимости от результатов каких-либо действий (поверхности с изображением номера уровня и т.д.). К статическим относятся поверхности: GameScreen, BallSurface[11], CrossSurface, GameOverSurface, TitleSurface, PunktSurface[5], ArrowSurface, EnterSurface, AboutSurface. К динамическим: PlayerSurface, LevelSurface, ScoreSurface, StringSurface, HiScoreSurface.

При запуске программы создается окно со стилем WS_POPUP (без шапки и кнопок), инициализируется DirectDraw (функция DirectDrawInit), создаются все поверхности (функция CreateAllSurfaces), загружаются все статические (DrawAllStaticSurfaces). Динамические поверхности рисуются только по мере необходимости (функции DrawHiScore, DrawString, DrawPlayerName, DrawLevel). После этого в массив hiscore загружаются лучшие результаты (LoadHiScore).

Далее программный счетчик попадает в цикл обработки сообщений и обновления экрана. По сравнению с обычными Windows-приложениями здесь функция GetMessage заменена на PickMessage, которая в отличие от первой не ожидает прихода сообщения, а проверив очередь сообщений, завершает свою работу. Если сообщения в данный момент не пришло, то программа начинает заниматься обновлением экрана, но только в случае, если переменная GameActive имеет значение true, иначе программа пассивно ожидает сообщений. Значение переменной GameActive зависит от того, активно сейчас приложение или нет. Изменение этой переменной происходит при возникновении события WM_ACTIVATEAPP.

Перед обновлением экрана происходит небольшая задержка, работающая на основе внутреннего таймера процессора. Ее назначение - реализация одинаковой скорости работы программы на разных кадровых развертках монитора (без нее единственная задержка в программе - ожидание кадрового синхроимпульса при обработке команды Flip (обмен поверхностей экрана)).

Функция UpdateScreen производит обновление экрана каждый кадр. В зависимости от флагов CrossMustBeUpdated, BarMustBeUpdated, TurnMustBeUpdated, Gaming, EnteringName, ViewingHiScore, ViewingAbout функция обновляет те или иные изображения (функции с префиксом View, например, ViewTable, ViewBall и т.д.).

Выводы

. Выбрана среда программирования, перечислены преимущества данного выбора.

. Рассмотрены общие принципы обновления информации на экране с помощью DirectDraw.

. Реализованы алгоритмы обновления изображения на экране в программе.

 

 

4. Тестирование и отладка

 

.1 Тестирование программного средства

 

Тестирование проекта производилось по принципу черного ящика в реальном времени. Цель тестирования - выявление как можно большего количества ошибок в программе. Парк машин, на котором тестировался программный продукты весьма обширен: начиная от Intel Pentium 233/64Mb и заканчивая AMD Athlon-2500/512Mb. Операционными системами, на которых тестировался проект являются: Windows 98 SE, Windows 2000 Professional, Windows Me, Windows XP Home, Windows XP Professional, Windows Server 2003.

В ходе тестирования были выявлены следующие ошибки и недоработки:

) Иногда программа зависала при попытке просмотреть таблицу рекордов.

Причина: переполнение переменной char pn[20], в результате которого уничтожались какие-то важные данные в памяти.

Устранение: максимальный номер символа, используемый в переменной, уменьшен на единицу.

) На некоторых компьютерах программа не запускается с ошибкой невозможно инициализировать DirectDraw.

Причина: попытка включения неподдерживаемого графического режима.

Устранение: смена используемой глубины цвета с 32 на 16 бит.

) После переключения задач с помощью Alt+Tab и возврата в программу программа завершала свою работу с ошибкой DDERR_SURFACELOST.

Причина: при потере фокуса приложением видеопамять затиралась посторонними данными.

Устранение: добавлена обработка ошибки DDERR_SURFACELOST, теперь в случае ее возникновения вызывается новая функция Restore, перезагружающая все поверхности.

 

4.2 Определение характеристик полученного программного средства

 

Перечислим основные функциональные характеристики программы:

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

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

имеется возможность просмотра информации о двадцати лучших результатах;

программа имеет удобный интерфейс пользователя.

Выводы:

. Произведено тестирование программы. Тестирование проводилось методом черного ящика. Было обнаружено и устранено три неполадки.

. Определены характеристики полученного программного средства. Все характеристики удовлетворяют определенным на этапе анализа требованиям.

 

 

Заключение

 

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

Программа написана на языке C++ в среде программирования Visual C++ пакета Microsoft Visual Studio 6.0. В программе в полной мере используется технологии вывода графики с помощью Microsoft DirectX.

В процессе выполнения программы были выполнены следующие задачи:

) Произведено описание предметной области программного продукта, определены требования к программному продукту;

) Было выполнено проектирование программного средства: выбрана среда выполнения программного кода программы, определена архитектура программного средства;

) Выбрана среда программирования, с