Рефераты. Игровая программа

После выполнения процедуры таймера автоматически вызывается процедура перерисовки окна OnPaint. В этой процедуре основываясь на изменённых и подсчитанных данных в процедуре таймера прорисовываются по соответствующим координатам текстуры. Так происходит взаимодействие пользователя с программой. Так как событие таймера происходит достаточно часто примерно 100 раз в секунду то прорисовка окна и реакция программы достаточно высока. Конечно здесь не маловажную роль играет процессор т. к. чем выше его частота тем чаще и быстрее будет происходить событие таймера.

4. Документирование
4.1 Инструкция пользователя по пп

Так как в моём проекте речь идет про игру то я опишу основные функциональные клавиши управления.

Клавиши действующие в меню:

· «Стрелка вверх» и «Стрелка вниз» передвижение курсора выделения вверх и вниз;

· «Esc» выход из игры и возвращение в главное меню;

· «Стрелка вправо» и «Стрелка влево» действуют если находишься в подменю выбора машины; при нажатии «Esc» выбирается та машина которая была показана;

· «Enter» используется для входа в подменю и начала игры;

КП. 2203. 04. 35. ПЗ

Лист

13

Изм

Лист

№ докум

Подп.

Дата

Клавиши действующие в игре:

· «Стрелка вверх» и «Стрелка вниз» разгон и торможение автомобиля;

· «Стрелка влево» и «Стрелка вправо» поворот налево и поворот направо;

· «N» (англ.) используется для временного ускорения;

· «P» или «Pause» пауза в игре, при повторном нажатии пауза отключается;

· «Esc» возвращение в главное меню;

Клавиши действующие и в меню и в игре:
· «K» (англ.) используется для отображения координат нахождения курсора мыши на форме, результат выводится в заголовок формы;
· «F» (англ.) используется для отображения количества кадров в секунду, результат выводится в заголовок формы;
· «A» (англ.) используется для проверки поддержки OpenGL, если поддерживается то в заголовке формы будет написано версия OpenGL и видео карта через которую осуществляется вывод;

КП. 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;

CountKM:=0;

end;

//торможение

if PressedKey[40]=true then

begin

Speed:=Speed+0.00002;

GasDeley:=1;

end;

if (CountFuel>0)and(CountKM<20) then if PressedKey[38]=true then Speed:=Speed-0.000005;//разгон

if (PressedKey[39]=true)and(Speed<-0.00001) then X_KordCar:=X_KordCar+0.00005-Speed/5;//поворот вправо с учётом скорости

if (PressedKey[37]=true)and(Speed<-0.00001) then X_KordCar:=X_KordCar-0.00005+Speed/5;//поворот влево с учётом скорости

if (PressedKey[40]=False)and(PressedKey[38]=False) then begin Speed:=Speed+0.000003; GasDeley:=1; end;//торможение инерцией

if Speed>0 then Speed:=0;//скорость торможения

//////////////////////////////////////////////////////////

if (Gas)and(CountFuel<>0) then

begin

GasDeley:=GasDeley+0.0005;

if GasDeley>=1 then Speed:=Speed+0.00005 else Speed:=-0.025;

if Speed>-0.01 then

begin

Speed:=-0.01;

Gas:=false;

GasDeley:=1;

end;

end

else

if Speed<-0.01 then Speed:=-0.01;//ограничение скорости

//////////////////////////////////////////////////////////

Y_Kord:=Y_Kord+Speed;//наращивание скорости

if EnymiGoToWay then begin

Y_Enymi:=Y_Enymi+Speed+0.0085;

X_Enymi:=X_Enymi+(0.001*LR);

if X_Enymi>=Right_death_dot then LR:=-1;

if X_Enymi<=Left_death_dot then LR:=1;

if (Y_Enymi>1.2)or(Y_Enymi<-1.2)then EnymiGoToWay:=false;

end;

if FuelGoToWay then

Y_KordFuel:=Y_KordFuel+Speed; //Перемещение элементов

if (Speed<>0)and(Speed<-0.00002)and(CountFuel>0) then

CountFuel:=CountFuel+MinusFuel/(Speed*50); //Уменьшение топлива

if (CountFuel<=0)or(CountKM>=20) then begin Gas:=false; GasDeley:=1; Speed:=Speed+0.000003; end;

if (Speed<-0.005)and(MinusFuel=0.00002) then MinusFuel:=MinusFuel*10 else

if MinusFuel=0.0002 then MinusFuel:=MinusFuel/10;

if Y_Kord<=-2.0 then Y_Kord:=0;//перестановка кадров

if X_KordCar>=Right_death_dot then

begin

X_KordCar:=Right_death_dot;//ограничение справа

if Speed<-0.001 then begin Speed:=Speed+0.00002; GasDeley:=1; end;//Уменьшение скорости при прикосновении к бардюру справап

Страницы: 1, 2, 3, 4, 5



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.