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

RemoveMeny:=RemoveMeny+0.018;

glCallList(Background);

glPushMatrix;

glTranslatef(RemoveMeny,0.0,0.0);

glCallList(StringMeny);

glPopMatrix;

end

else begin

glCallList(Background);//Загрузка фона

glCallList(StringMeny);//Загрузка надписей в меню

end;

if (Selected_Menu_item<>'Car')and(RemoveMeny=0.0) then begin

Angel:=Angel+1;

if Angel=360 then Angel:=0;

glCallList(8);//Загрузка колеса

glPushMatrix;

glScalef(0.5,0.66,0.5);

glTranslatef(LeftTiresMeny,TopTiresMeny,0.0);

glRotatef(Angel,0.0,0.0,1.0);

glCallList(Tires);

glPopMatrix;

glPushMatrix;

glScalef(0.5,0.66,1.0);

glTranslatef(RightTiresMeny,TopTiresMeny,0.0);

glRotatef(Angel,0.0,0.0,1.0);

glCallList(Tires);

glPopMatrix;

end;

end;

if Selected_Menu_item='Start' then //Нажата клавиша Start игра началась

begin //Start

// glClear(GL_COLOR_BUFFER_BIT); //медленное стирание

glPushMatrix;

glTranslatef(0.0,Y_Kord,0.0);

glCallList(WayDesert_1);

glPopMatrix;

glPushMatrix;

glTranslatef(0.0,Y_Kord+1.99,0.0);

glCallList(WayDesert_1);

glPopMatrix;

if not Pause then

if Speed<>0 then CountKM:=CountKM+abs(Speed/27);//количесто пройденых километров

// Caption:=FloatToStrF(CountKM,ffNumber,6,3);

//Генерирование Бензина или Нитро на дороге

if (CountKM>NextKM_GenerFuel)and(FuelGoToWay=False)and(speed<>0) then

begin

if Random(2)=1 then X_KordFuel:=Random*0.5 else X_KordFuel:=-Random*0.5;

FuelGoToWay:=true;

Y_KordFuel:=1.5;

Inc(NextKM_GenerFuel,1);

if not FuelOrNitro then FuelOrNitro:=true else FuelOrNitro:=false;

end;

if (FuelGoToWay)and(Y_KordFuel<-1.2) then FuelGoToWay:=False;

//Прорисовка Бензина или Нитро

if not KordObjectItems(X_KordFuel,Y_KordFuel,0.05,0.065,X_KordCar,Y_KordCar,CarXPogresh,CarYPogresh) then

begin // KordObject

glPushMatrix;

glTranslatef(X_KordFuel,Y_KordFuel,0.0);

if FuelOrNitro then glCallList(ItemFuelList) else glCallList(ItemNitroList);

glPopMatrix;

end//KordObject

else

begin

Y_KordFuel:=1.5;

FuelGoToWay:=False;

PlaySound('Sound\Get_Nitro_Fuel.wav',0,SND_ASYNC);

if FuelOrNitro then if CountFuel<20 then CountFuel:=CountFuel+1;

if not FuelOrNitro then if CountNitro<=10 then CountNitro:=CountNitro+1;

end;

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

{Caption:=FloatToStrF(CountFuel,ffNumber,6,3)+' '+

FloatToStrF(CountNitro,ffNumber,6,3)+' '+

FloatToStrF(CountKM,ffNumber,6,3)+' '+

FloatToStrF(GasDeley,ffNumber,6,3);}

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

if (CountKM>NextKmEnymy)and(EnymiGoToWay=False)and(speed<>0) then

begin

NumbrCar:=random(9)+1;

EnymiGoToWay:=true;

NextKmEnymy:=NextKmEnymy+0.1;

Y_Enymi:=1.2;

end;

if (EnymiGoToWay)and(Y_Enymi<-1.2) then EnymiGoToWay:=False;

if not KordObjectEnimy(X_Enymi,Y_Enymi,0.08,0.130,X_KordCar,Y_KordCar,CarXPogresh-0.05,CarYPogresh-0.05) then

begin // KordObject

glPushMatrix;

glTranslatef(X_Enymi,Y_Enymi,0.0);

glCallList(EnymiCars[NumbrCar]);

glPopMatrix;

end//KordObject

else

begin

Y_Enymi:=1.2;

EnymiGoToWay:=False;

GasDeley:=1;

Gas:=false;

Speed:=-0.001;

PlaySound('Sound\Denger_Sound.wav',0,SND_ASYNC);

if CountFuel>0 then CountFuel:=CountFuel-1;

if CountFuel<0 then CountFuel:=0;

end;

//рисование машины

if ChooseCar='ShotWarKiller' then begin

glPushMatrix;

glTranslatef(X_KordCar,Y_KordCar,0.0);

glCallList(WarKiller);

glPopMatrix;

end;

if ChooseCar='ShotFlash' then begin

glPushMatrix;

glTranslatef(X_KordCar,Y_KordCar,0.0);

glCallList(Flash);

glPopMatrix;

end;

if ChooseCar='ShotGembic' then begin

glPushMatrix;

glTranslatef(X_KordCar,Y_KordCar,0.0);

glCallList(Gembic);

glPopMatrix;

end;

if ChooseCar='ShotGlass' then begin

glPushMatrix;

glTranslatef(X_KordCar,Y_KordCar,0.0);

glCallList(Glass);

glPopMatrix;

end;

//Проигрыш и выигрышь в игре

if (CountFuel<=0)and(CountKM<20) then begin glCallList(GameOver); if not sound then sound:=true; end;

if CountKM>=20 then begin glCallList(YouWin); if not sound then sound:=true; end;

if ((CountFuel<=0)or(CountKM>=20))and(Speed>=0)then begin

glPushMatrix;

glTranslatef(0.0,-0.4,0.0);

glCallList(PressEsc);

glPopMatrix

end;

//Игровое меню

glPushMatrix;

glTranslatef(0.7,0.58,0.0);

glScalef(1.5,1.5,1.0);

glCallList(GameMenu);

glPopMatrix;

//Надписи на меню

glPushMatrix;

glTranslatef(0.64,0.68,1.0);

glCallList(FontList);

glPopMatrix;

//

if Pause then glCallList(PauseToGame);

end; //Start

if Selected_Menu_item='Car' then //Нажата клавиша Car

begin //Car

if RemoveMeny<=-0.5 then RemoveMeny:=-0.5 else RemoveMeny:=RemoveMeny-0.018;

glCallList(Background);

glPushMatrix;

glTranslatef(RemoveMeny,0.0,0.0);

glCallList(StringMeny);

glPopMatrix;

if RemoveMeny<=-0.5 then

begin

//Меню

glPushMatrix;

glTranslatef(0.5,0.2,0.0);

glCallList(SubMenuInCar);

glPopMatrix;

DeleyButtonInCarMeny;

//Выбирается машина

case CarMenuItem of

1:begin

//ShotWarKiller

glPushMatrix;

glTranslatef(0.5,0.12,0.0);

glCallList(ShotWarKiller);

glPopMatrix;

ChooseCar:='ShotWarKiller';

CarXPogresh:=XPogreshWarKiller;

CarYPogresh:=YPogreshWarKiller;

end;

2:begin

//ShotFlash

glPushMatrix;

glTranslatef(0.5,0.12,0.0);

glCallList(ShotFlash);

glPopMatrix;

ChooseCar:='ShotFlash';

CarXPogresh:=XPogreshFlash;

CarYPogresh:=YPogreshFlash;

end;

3:begin

//ShotGembic

glPushMatrix;

glTranslatef(0.5,0.12,0.0);

glCallList(ShotGembic);

glPopMatrix;

ChooseCar:='ShotGembic';

CarXPogresh:=XPogreshFlash;

CarYPogresh:=YPogreshFlash;

end;

4:begin

//ShotGlass

glPushMatrix;

glTranslatef(0.5,0.12,0.0);

glCallList(ShotGlass);

glPopMatrix;

ChooseCar:='ShotGlass';

CarXPogresh:=XPogreshFlash;

CarYPogresh:=YPogreshFlash;

end;

end;//Case

end;//RemoveMeny

end; //Car

if Selected_Menu_item='Actors' then //Нажата клавиша Actors

begin

glCallList(Actor);

end;

if Selected_Menu_item='Exit' then //Нажата клавиша Exit

begin

end;

SwapBuffers(DC);

EndPaint(DC,ps);

{if Selected_Menu_item='Start'then begin

Canvas.Brush.Color:=clWhite;

Canvas.TextOut(500,40,'Бензин: '+FloatToStrF(CountFuel,ffNumber,6,3)+'л');

Canvas.TextOut(500,55,'Нитро: '+FloatToStrF(CountNitro,ffNumber,6,3)+'кг/см');

Canvas.TextOut(500,70,'К.метры: '+FloatToStrF(CountKM,ffNumber,6,3)+'км');

end;}

//

Caption:=StatisticCaption;

//Поддержка аппаратного ускорителя и версия OpenGL клавиша 'a'

if PressedKey[65]=true then

Caption:='OpenGL: '+

StrPas(glGetString(GL_VERSION))+

' '+

StrPas(glGetString(GL_VENDOR))+

' '+

StrPas(glGetString(GL_RENDERER));

if PressedKey[70]=true then //Показывать Fps -- клавиша 'f'

begin

newCount:=GetTickCount;

Inc(frameCount);

If abs(newCount - lastCount) > 1000 then

begin

StatisticCaption:='FPS: '+FloatToStr(frameCount);

lastCount := newCount;

frameCount := 0;

end;

end;

if PressedKey[75]=true then

StatisticCaption:='X='+FloatToStrF(xpos,ffNumber,4,3)+

' '+'Y='+FloatToStrF(ypos,ffNumber,4,3);

if (PressedKey[70]=false)and

(PressedKey[75]=false)and

(PressedKey[65]=false)then StatisticCaption:='SpeedLine';

end;

procedure TSpeedGL.FormDestroy(Sender: TObject);

begin

//glDeleteLists(1,1);

timeKillEvent(uTimerID);

wglMakeCurrent (0, 0);

wglDeleteContext (hrc);

ReleaseDC (Handle, DC);

end;

procedure TSpeedGL.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

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

xpos:=2*X/ClientWidth-1;

ypos:=2*(ClientHeight-Y)/ClientHeight-1;

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

if Selected_Menu_item='' then begin //Selected_Menu_item

if (xpos>-0.3)and(ypos>0.4)and

(xpos<0.3)and(ypos>0.4)and

(xpos<0.3)and(ypos<0.6)and

(xpos>-0.3)and(ypos<0.6)then begin

if Menu_item<>1 then

PlaySound('Sound\Select_MainMenu.wav',0,SND_ASYNC);

Menu_item:=1;

end;

if (xpos>-0.3)and(ypos>0.15)and

(xpos<0.3)and(ypos>0.15)and

(xpos<0.3)and(ypos<0.35)and

(xpos>-0.3)and(ypos<0.35)then begin

if Menu_item<>2 then

PlaySound('Sound\Select_MainMenu.wav',0,SND_ASYNC);

Menu_item:=2;

end;

if (xpos>-0.3)and(ypos>-0.1)and

(xpos<0.3)and(ypos>-0.1)and

(xpos<0.3)and(ypos<0.1)and

(xpos>-0.3)and(ypos<0.1)then begin

if Menu_item<>3 then

PlaySound('Sound\Select_MainMenu.wav',0,SND_ASYNC);

Menu_item:=3;

end;

if (xpos>-0.3)and(ypos>-0.5)and

(xpos<0.3)and(ypos>-0.5)and

(xpos<0.3)and(ypos<-0.3)and

(xpos>-0.3)and(ypos<-0.3)then begin

if Menu_item<>4 then

PlaySound('Sound\Select_MainMenu.wav',0,SND_ASYNC);

Menu_item:=4;

end;

{if Selected_Menu_item='Start' then

begin

if

end;}

end; //Selected_Menu_item

end;

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



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