Die Tastensteuerung:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
vk_Left: begin
Ship.Bild.Left:=Ship.Bild.Left-Pixel;
if Ship.Bild.Left<0 then Ship.Bild.Left:=0;
end;
vk_Right: begin
Ship.Bild.Left:=Ship.Bild.Left+Pixel;
if Ship.Bild.Left+Ship.Bild.Width>Form1.Width then Ship.Bild.Left:=Form1.Width-Ship.Bild.Width;
end;
vk_Space: Ship.Shoot;
end;
end;
Dieser Code stammt aus einem anderen Forum, anders hat es nicht funktioniert
Delphi-Quellcode:
type
TForm1 = class(TForm)
private
procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
public
{ Public-Deklarationen }
end;
...
procedure TForm1.CMDialogKey(var Message: TCMDialogKey);
begin
with message do begin
case charcode of
vk_Left: begin
Ship.Bild.Left:=Ship.Bild.Left-Pixel;
if Ship.Bild.Left<0 then Ship.Bild.Left:=0;
end;
vk_Right: begin
Ship.Bild.Left:=Ship.Bild.Left+Pixel;
if Ship.Bild.Left+Ship.Bild.Width>Form1.Width-17 then Ship.Bild.Left:=Form1.Width-Ship.Bild.Width-17;
end;
vk_Space: Ship.Shoot;
else
inherited;
end;
end;
end;
Der Timer:
Delphi-Quellcode:
Procedure TForm1.ShotTimer(Sender: TObject);
begin
if Sender=Ship.Shot.Timer then begin
Ship.Shot.Bild.Top:=Ship.Shot.Bild.Top-Pixel;
if Ship.Shot.Bild.Top+Ship.Shot.Bild.Height<=0 then Ship.Hit;
end;
end;
TShot ist eine eigene Klasse mit eingebautem Timer, der hier erstellt wird:
Delphi-Quellcode:
Constructor TShot.Create(X,Y,W,H: Integer; AP: TForm);
begin
inherited Create(x,y,w,h,ap);
Timer:=TTimer.Create(AP);
with Timer do begin
Interval:=50;
OnTimer:=Form1.ShotTimer;
Enabled:=True;
end;
end;