Создание игровой программы "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.
В процессе выполнения программы были выполнены следующие задачи:
) Произведено описание предметной области программного продукта, определены требования к программному продукту;
) Было выполнено проектирование программного средства: выбрана среда выполнения программного кода программы, определена архитектура программного средства;
) Выбрана среда программирования, с