. , , ,

,,,

,


:__________________

__________________________________

__________________________________

__ _

_____ ______

________________________________________________

( . 2203. 04. 35. )


-


_______ ________________ _____________________

______ ____________ _____________________

. 頠 ______ ____________ _____________________

____________________________________

____________________________________________________


, 2005


3
1.   4
1.1   DELPHI 4
1.2 Delphi.    4
1.3     6
1.4 -    6
1.5       8
1.6   Delphi 8
1.7    9
1.8  -  9
1.9  OLE 2.0, DDE  VBX 10

2.   10
2.1   10
2.2      10
2.3   11
2.4     
    12
3.  12
3.1      12
3.2       12
4.
  13
4.1
     13
5.
  15
5.1    15
5.2   15
16

. 2203. 04. 35.

.

. 2 24
.
.

. . .

20 .

:

1.               () , 1 ;

2.               (), ;

3.               , .

Delphi 5 OpenGL 1.3.4582 , Pixia 2.4g , Image Editor 3.0 , 3D-Stydio Max 5.0 ().

. 2203. 04. 35.

3
. .

1.

1.1 Delphi.

Delphi - , . .

H , Borland . , . , . H, , , Delphi .

, Delphi , , Borland , .

1.2 Delphi.

Delphi - :

-

(, , )

.

. 2203. 04. 35.

4
.

1.3

, Delphi, , -. , 120 486DX33. , (4GL) , 3GL. , Delphi ( ).

, . - , , . Delphi , , 10-20 , , . , , Delphi , , p-, p-. .

. 2203. 04. 35.

5
.

1.4 -

Delphi . , Delphi. , , . , Delphi , , . , Borland , , .

Delphi , 270 . - . - Delphi, , , , , 250, , , . , , , , Delphi , , , . , . , Windows . Windows . Delphi .

. 2203. 04. 35.

6
.

Delphi (RAD - rapid application development), . VCL - , , , , , , DDE OLE. , Delphi, , , Borland, . , , freeware- . , - , . , Visual Basic.
VBX. Delphi. , Delphi . , VB. , , . VBX - ++.
VBX , , , .

VBX C++. Delphi , , . Delphi .

. 2203. 04. 35.

7
.

1.5

Delphi SQL Borland Database Engine. Delphi Borland SQL Link, Oracle, Sybase, Informix InterBase . , Delphi Interbase , SQL- . Delphi, ( , ), .dbf ( dBase Clipper) .db (Paradox). InterBase for Windows 4.0 ( SQL-, ), -.

1.6 Delphi

InterBase - , . SQL- InterBase, InterBase. .

Team Development Support - . . Intersolve PVCS 5.1 Delphi.

. 2203. 04. 35.

8
.

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. :

1.   () ;

2.   , ( OpenGL);

3.   .

.

( ).

, .

2.2

     Intel (R) Pentium (R) III 900 MHz ;

     32MB SDRAM ;

     OpenGL v. 1.3.4582 . . ;

     AC 97 ;

. 2203. 04. 35.

10
.

2.3

. . SpeedGL :

1.   MediaPlayer;

2.   ActionList.

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

.

:

     ;

     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;//

end;

if X_KordCar<=Left_death_dot then

begin

X_KordCar:=Left_death_dot;//

if Speed<-0.001 then begin Speed:=Speed+0.00002; GasDeley:=1; end;//

end;

end;

end

else

if (PressedKey[27]=true)and(CountTickTimer>100) then

begin

Selected_Menu_item:='';

Menu_item:=2;

CountTickTimer:=0;

Speed:=0.0;

Pause:=false;

sound:=false;

CountFuel:=8;

CountKM:=0;

end;

if Selected_Menu_item='' then // Esc

begin

if SpeedGL.MediaPlayer1.FileName<>'Textures\Video\SL_Start_Logo.avi' then

if SpeedGL.MediaPlayer1.FileName<>'Sound\Main_Menu.mp3' then begin

SpeedGL.MediaPlayer1.FileName:='Sound\Main_Menu.mp3';

SpeedGL.MediaPlayer1.Open;

SpeedGL.MediaPlayer1.Play;

end;

if CountTickTimer>100 then begin

if PressedKey[27]=true then

begin

SpeedGL.MediaPlayer1.Stop;

SpeedGL.MediaPlayer1.Close;

SpeedGL.MediaPlayer1.FileName:='';

Selected_Menu_item:='Exit';

CountTickTimer:=0;

end;

if PressedKey[40]=true then

begin

Inc(Menu_item);

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

CountTickTimer:=0;

end; //

if PressedKey[38]=true then

begin

Dec(Menu_item);

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

CountTickTimer:=0;

end;//

if CountTickTimer>1000 then CountTickTimer:=110;

end;

if Menu_item>4 then Menu_item:=1;//

if Menu_item<1 then Menu_item:=4;// 4

if PressedKey[13]=true then begin

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

case Menu_item of

1:begin

Selected_Menu_item:='Start';

Score:=0;

FuelGoToWay:=false;

NextKM_GenerFuel:=1;

CountKM:=0;

CountFuel:=8;

CountNitro:=0;

MinusFuel:=0.00002;

Y_KordFuel:=1.5;

FuelGoToWay:=false;

GasDeley:=1;

Gas:=false;

NextKmEnymy:=0.3;

Y_Enymi:=1.2;

end;

2:begin Selected_Menu_item:='Car'; end;

3:begin Selected_Menu_item:='Actors'; end;

4:begin Selected_Menu_item:='Exit'; end;

end;

end;

end;

if CountTickTimer>100 then begin

if Selected_Menu_item='Actors' then // Sound

begin

if SpeedGL.MediaPlayer1.FileName<>'Sound\Actor.mp3' then begin

SpeedGL.MediaPlayer1.FileName:='Sound\Actor.mp3';

SpeedGL.MediaPlayer1.Open;

SpeedGL.MediaPlayer1.Play;

end;

if PressedKey[27]=true then

begin

Selected_Menu_item:='';

SpeedGL.MediaPlayer1.Stop;

SpeedGL.MediaPlayer1.Close;

SpeedGL.MediaPlayer1.FileName:='';

CountTickTimer:=0;

end;

end;

if Selected_Menu_item='Car' then // Car

begin //Car

if SpeedGL.MediaPlayer1.FileName<>'Sound\Garage.mp3' then begin

SpeedGL.MediaPlayer1.FileName:='Sound\Garage.mp3';

SpeedGL.MediaPlayer1.Open;

SpeedGL.MediaPlayer1.Play;

end;

if PressedKey[27]=true then

begin

Selected_Menu_item:='';

SpeedGL.MediaPlayer1.Stop;

SpeedGL.MediaPlayer1.Close;

SpeedGL.MediaPlayer1.FileName:='';

CountTickTimer:=0;

OldSelectMenyItem:='Car';

end;

if PressedKey[37]=true then

begin

Dec(CarMenuItem);

CountTickTimer:=0;

LeftButton:=true;

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

end;

if PressedKey[39]=true then

begin

Inc(CarMenuItem);

CountTickTimer:=0;

RightButton:=true;

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

end;

if CarMenuItem>4 then CarMenuItem:=1;

if CarMenuItem<1 then CarMenuItem:=4;

end; //Car

end;//CountTickTimer

if Selected_Menu_item='Exit' then // Exit

begin

SpeedGL.MediaPlayer1.Free;

Application.Terminate;

Application.ProcessMessages;

end;

InvalidateRect(SpeedGL.Handle, nil, False);//

if (Symvol=0)and

(PressedKey[78]=true)and

(CountNitro>0)and

(GasDeley=1) then

begin

Gas:=true;

CountNitro:=CountNitro-1;

GasDeley:=0;

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

end;

end;


OnPaint:

procedure TSpeedGL.FormPaint(Sender: TObject);

var

ps:TPaintStruct;

begin

BeginPaint(dc,ps);

if Selected_Menu_item='' then

begin

case Menu_item of

1:begin LeftTiresMeny:=-0.849; RightTiresMeny:=0.8; TopTiresMeny:=0.76; end;

2:begin LeftTiresMeny:=-1.1; RightTiresMeny:=1.0; TopTiresMeny:=0.4; end;

3:begin LeftTiresMeny:=-0.8; RightTiresMeny:=0.8; TopTiresMeny:=0.0; end;

4:begin LeftTiresMeny:=-0.8; RightTiresMeny:=0.8; TopTiresMeny:=-0.58; end;

end;

if OldSelectMenyItem='Car' then begin

if RemoveMeny>=0.0 then begin RemoveMeny:=0.0; OldSelectMenyItem:='' end else

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;

:__________________ __________________________________ __________________________________ __

 

 

 

! , , , .
. , :