unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm2 =
class;
TPolizei =
class;
TSpiel2 =
class;
TPolizei =
class(Tobject)
private
{ Private-Deklarationen }
Fenster : TForm2;
rpunkt : TPoint;
Haupt : Tspiel2;
public
{ Public-Deklarationen }
procedure Bewegung();
end;
TSpiel2 =
class
private
{ Private-Deklarationen }
rSpielfigur : TImage;
rPause : Boolean;
rDiamant : Timage;
Polizei : TPolizei;
rkollison1 : Tshape;
sh :
array of TImage;
shpos :
array of TPolizei;
rZeit : Integer;
anzahl : integer;
Fenster : Tform2;
public
{ Public-Deklarationen }
procedure Polizeierstellen();
procedure Erstellen();
constructor Create;
destructor Destroy;
override;
end;
TForm2 =
class(TForm)
Engine: TTimer;
kollision: TTimer;
Special: TTimer;
procedure FormCreate(Sender: TObject);
procedure Onclose(Sender: TObject;
var Action: TCloseAction);
procedure OnkeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
procedure EngineTimer(Sender: TObject);
procedure kollisionTimer(Sender: TObject);
procedure SpecialTimer(Sender: TObject);
private
{ Private-Deklarationen }
Spiel2 : Tspiel2;
Laser : TPolizei;
Aktiv : Boolean;
Zeit :
String;
z1,z2 : integer;
public
{ Public-Deklarationen }
end;
var
Form2: TForm2;
T,T1 : integer;
X : integer;
F : integer;
implementation
{$R *.dfm}
procedure TPolizei.Bewegung;
begin
if haupt.rSpielfigur.Top < rpunkt.Y
then rpunkt.Y := rpunkt.Y -1;
if haupt.rSpielfigur.Top > rpunkt.Y
then rpunkt.Y := rpunkt.Y +1;
if haupt.rSpielfigur.Left < rpunkt.X
then rpunkt.X := rpunkt.X -1;
if haupt.rSpielfigur.Left > rpunkt.X
then rpunkt.X := rpunkt.X +1;
end;
constructor Tspiel2.Create;
begin
Polizei := TPolizei.Create;
rkollison1 := TShape.create(
nil);
rkollison1.Parent := fenster;
rkollison1.Visible:= false;
rSpielfigur := Timage.Create(
nil);
rSpielfigur.Picture.Bitmap.LoadFromFile(ExtractFilePath(Application.ExeName) + '
\Bilder\rechts.bmp');
rSpielfigur.Top:= 0;
rSpielfigur.Left:= 30;
rSpielfigur.AutoSize := true;
rSpielfigur.Picture.Bitmap.TransparentColor := clyellow;
rSpielfigur.Picture.Bitmap.Transparent := true;
rSpielfigur.Transparent:=true;
rSpielfigur.Parent := fenster;
rkollison1.Height := rSpielfigur.Height;
rkollison1.Width := rSpielfigur.Width -13;
T:= 1;
F := 1;
Polizeierstellen;
end;
procedure TForm2.EngineTimer(Sender: TObject);
var
index : word;
begin
If not Spiel2.rPause
then form2.Caption := '
Aspirin'+'
'+ Zeit ;
If Spiel2.rPause
then form2.Caption := '
Aspirin'+'
'+'
Pause';
if Spiel2.rZeit > 0
then
begin
if t1 = 1
then
begin
//showmessage('Jetzt') ;
for index := 0
to Spiel2.anzahl-1
do
begin
Spiel2.shpos[
index].Bewegung();
Spiel2.sh[
index].Top := Spiel2.shpos[
index].rpunkt.Y;
Spiel2.sh[
index].Left := Spiel2.shpos[
index].rpunkt.X;
// sh2[index].Bewegung;
end;
end;
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Zeit := '
2:00';
form2.Width := 800;
form2.Height := 600;
Spiel2 := TSpiel2.Create;
Spiel2.rPause := true;
Form2.DoubleBuffered:=True;
end;
procedure TForm2.kollisionTimer(Sender: TObject);
var
index : word;
r : Trect;
begin
if t1 = 1
then
begin
for index := 0
to Spiel2.anzahl-1
do
begin
if intersectrect(r, Spiel2.rkollison1.BoundsRect, Spiel2.sh[
index].BoundsRect )
then
begin
showmessage('
Sie wurden erwischt');
application.Terminate;
end;
end;
end;
end;
procedure TForm2.Onclose(Sender: TObject;
var Action: TCloseAction);
begin
Spiel2.Free;
end;
procedure TForm2.OnkeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if not Spiel2.rPause
then
begin
case key
of
vk_down:
begin
if Spiel2.rSpielfigur.Top< 520
then
begin
Spiel2.rSpielfigur.Top := Spiel2.rSpielfigur.Top + 4;
Spiel2.rkollison1.Top := Spiel2.rSpielfigur.Top;
Spiel2.rkollison1.Left := Spiel2.rSpielfigur.Left +8;
end;
end;
vk_up:
begin
if not Spiel2.rSpielfigur.Top<0
then
begin
Spiel2.rSpielfigur.Top := Spiel2.rSpielfigur.Top -4;
Spiel2.rkollison1.Top := Spiel2.rSpielfigur.Top;
Spiel2.rkollison1.Left := Spiel2.rSpielfigur.Left +8;
end;
end;
vk_left:
begin
if not Spiel2.rSpielfigur.Left<0
then
begin
Spiel2.rSpielfigur.Left:= Spiel2.rSpielfigur.Left -4;
Spiel2.rSpielfigur.Picture.Bitmap.LoadFromFile(ExtractFilePath(Application.ExeName) + '
\Bilder\links.bmp');
Spiel2.rkollison1.Top := Spiel2.rSpielfigur.Top;
Spiel2.rkollison1.Left := Spiel2.rSpielfigur.Left +8;
end;
end;
vk_right:
begin
if Spiel2.rSpielfigur.Left < 730
then
begin
Spiel2.rSpielfigur.Left:= Spiel2.rSpielfigur.Left +4;
Spiel2.rSpielfigur.Picture.Bitmap.LoadFromFile(ExtractFilePath(Application.ExeName) + '
\Bilder\rechts.bmp');
Spiel2.rkollison1.Top := Spiel2.rSpielfigur.Top;
Spiel2.rkollison1.Left := Spiel2.rSpielfigur.Left +8;
end;
end;
end;
end;
if key = vk_space
then
begin
case T
of
0:
begin
Spiel2.rPause :=true;
T:=1;
end;
1:
begin
Spiel2.rPause := false;
T:=0;
end;
end;
end;
end;
procedure TForm2.SpecialTimer(Sender: TObject);
var
sl: TStrings;
r : integer;
begin
spiel2.rZeit:= spiel2.rZeit +1;
sl := TStringlist.Create;
sl.Delimiter := '
:';
sl.DelimitedText := Zeit;
z1 := strtoint(sl[0]);
z2 := strtoint(sl[1]);
if z2 = 0
then
begin
z1 := z1 -1;
z2 := 59;
end;
z2:= z2-1;
Zeit := inttostr(z1)+ '
:' + inttostr(z2);
sl.Free;
r := r+1;
if r=15
then
begin
Spiel2.Polizeierstellen;
r:=0;
end;
if spiel2.rZeit = 7200
then Special.Enabled:= false;
end;
destructor Tspiel2.Destroy;
begin
rSpielfigur.Free;
Polizei.Free;
setlength(sh, 0);
setlength(shpos, 0);
end;
procedure Tspiel2.Erstellen;
begin
shpos[anzahl]:= TPolizei.Create;
shpos[anzahl].Bewegung;
shpos[anzahl].rpunkt.X := 400;
shpos[anzahl].rpunkt.Y := 600;
sh[anzahl] := TImage.Create(
nil);
sh[anzahl].Parent:= form2;
sh[anzahl].Top := 600;
sh[anzahl].Left := 400;
sh[anzahl].Picture.Bitmap.LoadFromFile(extractfilepath(application.ExeName) + '
\Bilder\Polizei_rechts.bmp');
sh[anzahl].AutoSize:=true;
sh[anzahl].Picture.Bitmap.TransparentColor:= clwhite;
sh[anzahl].Picture.Bitmap.Transparent :=true;
sh[anzahl].Transparent:=true;
t1 := 1;
end;
procedure TSpiel2.Polizeierstellen;
begin
t1 := 0;
x :=length(shpos);
//showmessage(inttostr(x)+ ' ' + inttostr(length(shpos))+ ' '+ inttostr(anzahl)+ ' ' + inttostr(length(sh)));
setlength(sh,x+1);
setlength(shpos, x+1);
erstellen;
if length(shpos)>0
then anzahl := length(shpos);
end;
end.