Так как в моём проекте речь идет про игру то я опишу основные функциональные клавиши управления.
Клавиши действующие в меню:
· «Стрелка вверх» и «Стрелка вниз» передвижение курсора выделения вверх и вниз;
· «Esc» выход из игры и возвращение в главное меню;
· «Стрелка вправо» и «Стрелка влево» действуют если находишься в подменю выбора машины; при нажатии «Esc» выбирается та машина которая была показана;
· «Enter» используется для входа в подменю и начала игры;
КП. 2203. 04. 35. ПЗ
Лист
13
Изм
№ докум
Подп.
Дата
· «Стрелка вверх» и «Стрелка вниз» разгон и торможение автомобиля;
· «Стрелка влево» и «Стрелка вправо» поворот налево и поворот направо;
· «N» (англ.) используется для временного ускорения;
· «P» или «Pause» пауза в игре, при повторном нажатии пауза отключается;
· «Esc» возвращение в главное меню;
14
5.1 тестирование функций пп
Выполнение функций в данном проекте идет отличное так как небольшой сбой бал бы сразу замечен при работе программы.
5.2 тестирование надежности
Функция по считыванию клавиш продуманна таким образом что только реагирует на те клавиши на которые есть код выполнения, остальные игнорируются.
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
Pause:=false;
end;
if not Pause then begin
if Selected_Menu_item='Start' then //Нажата клавиша Start
if SpeedGL.MediaPlayer1.FileName<>'Sound\Race.mp3' then begin
SpeedGL.MediaPlayer1.FileName:='Sound\Race.mp3';
SpeedGL.MediaPlayer1.Open;
SpeedGL.MediaPlayer1.Play;
if (PressedKey[27]=true)and(CountTickTimer>100) then
Selected_Menu_item:='';
SpeedGL.MediaPlayer1.Stop;
SpeedGL.MediaPlayer1.Close;
SpeedGL.MediaPlayer1.FileName:='';
Menu_item:=2;
Speed:=0.0;
sound:=false;
CountFuel:=8;
CountKM:=0;
//торможение
if PressedKey[40]=true then
Speed:=Speed+0.00002;
GasDeley:=1;
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
GasDeley:=GasDeley+0.0005;
if GasDeley>=1 then Speed:=Speed+0.00005 else Speed:=-0.025;
if Speed>-0.01 then
Speed:=-0.01;
Gas:=false;
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;
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
X_KordCar:=Right_death_dot;//ограничение справа
if Speed<-0.001 then begin Speed:=Speed+0.00002; GasDeley:=1; end;//Уменьшение скорости при прикосновении к бардюру справап
Страницы: 1, 2, 3, 4, 5