47048 (608050), страница 2
Текст из файла (страница 2)
1.7 Библиотека визуальных компонентовЭта библиотека объектов включает в себя стандартные объекты построения пользовательского интерфейса, объекты управления данными, графические объекты, объекты мультимедиа, диалоги и объекты управления файлами, управление DDE и OLE. 1.8 Структурное объектно-ориентированное программирование Delphi использует структурный объектно-ориентированный язык (Object Pascal), который сочетает с одной стороны выразительную мощь и простоту программирования, характерную для языков 4GL, а с другой стороны эффективность языка 3GL. Программисты немедленно могут начать производить работающие приложения, и им не придется для этого изучать особенности программирования событий в Windows. Delphi полностью поддерживает передовые программные концепции включая инкапсуляцию, наследование, полиморфизм и управление событиями. 1.9 Поддержка OLE 2.0, DDE и VBXЭто очень важная особенность для разработчиков в среде Windows, поскольку в уже существующие Windows-приложения программист может интегрировать то, что разработает при помощи Delphi. | ||||||
КП. 2203. 04. 35. ПЗ | Лист | |||||
| 9 | ||||||
| Изм | Лист | № докум | Подп. | Дата | ||
2. Специальная часть2.1 Постановка задачиФункции ПП Данный программный продукт выводит изображение на форму средствами графической библиотеки OpenGL. Во время работы приложения происходит три этапа:
Входные и выходные данные. Входными данными в данном случае будут действия производимые пользователем на клавиатуре (управление движением автомобиля). Выходные данные отображение автомобиля вследствие изменившихся координат, скорости столкновение и разгон. 2.2 Минимальные технические требования и ОС
| ||||||
КП. 2203. 04. 35. ПЗ | Лист | |||||
| 10 | ||||||
| Изм | Лист | № докум | Подп. | Дата | ||
2.3 Проектирование ппГлавная форма предназначена для вывода графических действий. Во время работы приложения появляется пункты меню в которых можно выбрать четыре действия. Данная форма называется SpeedGL и на ней находится два компонента:
MediaPlayer Служит для загрузки звуков (музыки) формата *.mp3, *.wav и в дальнейшем проигрывания ее. ActionList Служит для выполнения кода на ту клавишу на которую у него прописанно действие. Пример: действие на сочетание клавиш Alt+F4. | ||||||
КП. 2203. 04. 35. ПЗ | Лист | |||||
| 11 | ||||||
| Изм | Лист | № докум | Подп. | Дата | ||
2.4 Основные алгоритмы для событий на форме и компонентахСамый главный алгоритм происходит на форме на событии OnPaint; Событие OnPaint происходит примерно каждые 0,010 сек. Оно вызывается специальным таймером, который подключается из модуля mmsystem. Если произошло событие OnPaint то происходят следующие действия:
Проверка состоит в следующем: если переменная Selected_Menu_item=’Start’ то тогда игра начнется и автоматически будут загружены нужные текстуры и начнет прорисовываться загруженный уровень, в других случаях если: Selected_Menu_item=’’; Selected_Menu_item=’Car’; Selected_Menu_item=’Actors’; Selected_Menu_item=’Exit’, то это все относится к меню и небольшим манипуляциям с текстурами. 3. разработка3.1 Кратко описания программной среды разработки Разработка велась в программной среде Delphi 5 т. к. это наиболее современная и наиболее совместимая с будущими версиями Delphi. Начиная с этой версии Delphi и выше велась поддержка OpenGL. 3.2 Реализация основных алгоритмов в среде разработки В данной программе реализован механизм зацикливания на событии таймера. Когда происходит это событие специальный алгоритм просматривает состояние клавиатуры и если нажата клавиша на которую у него прописано действие происходит определённые вычисления. | ||||||
КП. 2203. 04. 35. ПЗ | Лист | |||||
| 12 | ||||||
| Изм | Лист | № докум | Подп. | Дата | ||
| После выполнения процедуры таймера автоматически вызывается процедура перерисовки окна OnPaint. В этой процедуре основываясь на изменённых и подсчитанных данных в процедуре таймера прорисовываются по соответствующим координатам текстуры. Так происходит взаимодействие пользователя с программой. Так как событие таймера происходит достаточно часто примерно 100 раз в секунду то прорисовка окна и реакция программы достаточно высока. Конечно здесь не маловажную роль играет процессор т. к. чем выше его частота тем чаще и быстрее будет происходить событие таймера. 4. Документирование4.1 Инструкция пользователя по пп Так как в моём проекте речь идет про игру то я опишу основные функциональные клавиши управления. Клавиши действующие в меню:
| ||||||
КП. 2203. 04. 35. ПЗ | Лист | |||||
| 13 | ||||||
| Изм | Лист | № докум | Подп. | Дата | ||
Клавиши действующие в игре:
Клавиши действующие и в меню и в игре:
| ||||||
КП. 2203. 04. 35. ПЗ | Лист | |||||
| 14 | ||||||
| Изм | Лист | № докум | Подп. | Дата | ||
5. тестирование5.1 тестирование функций пп Выполнение функций в данном проекте идет отличное так как небольшой сбой бал бы сразу замечен при работе программы. 5.2 тестирование надежности Функция по считыванию клавиш продуманна таким образом что только реагирует на те клавиши на которые есть код выполнения, остальные игнорируются. | ||||||
| КП. 2203. 04. 35. ПЗ | Лист | |||||
| 15 | ||||||
| Изм | Лист | № докум | Подп. | Дата | ||
приложение
Событие таймера:
procedure FNTimeCallBack(uTimerID, uMessage: UINT;dwUser, dw1, dw2: DWORD) stdcall;
var
word:DWORD;
begin
Inc(CountTickTimer);
if (((PressedKey[19]=true)or
(PressedKey[80]=true))and(CountTickTimer>100))and(CountFuel>0) then
if(not Pause) then begin
Pause:=true;
CountTickTimer:=0;
end
else
begin
Pause:=false;
CountTickTimer:=0;
end;
if not Pause then begin
if Selected_Menu_item='Start' then //Нажата клавиша Start
begin
if SpeedGL.MediaPlayer1.FileName<>'Sound\Race.mp3' then begin
SpeedGL.MediaPlayer1.FileName:='Sound\Race.mp3';
SpeedGL.MediaPlayer1.Open;
SpeedGL.MediaPlayer1.Play;
end;
if (PressedKey[27]=true)and(CountTickTimer>100) then
begin
Selected_Menu_item:='';
SpeedGL.MediaPlayer1.Stop;
SpeedGL.MediaPlayer1.Close;
SpeedGL.MediaPlayer1.FileName:='';
Menu_item:=2;
CountTickTimer:=0;
Speed:=0.0;
sound:=false;
CountFuel:=8;















