Dann hier der Source. Aber ich habe halt schlechte Erfahrung gemacht, wenn ich den Source poste, dann antwortet wieder keiner
Delphi-Quellcode:
const
RightMove = 10 ;
LeftMove = -10 ;
NoMove = 0 ;
Jumphigh = 200 ;
NoJump = 0 ;
implementation
{$R *.dfm}
procedure ShowFighter(Image : TImage ; Richtung: String ; Bewegung : Boolean );
begin
if Richtung = 'Rechts' then Image.Picture.LoadFromFile('Bilder\Rechts.bmp');
if Richtung = 'Links' then Image.Picture.LoadFromFile('Bilder\Links.bmp');
if Richtung = 'Gerade' then Image.Picture.LoadFromFile('Bilder\Gerade.bmp');
end;
procedure MoveFighter(Image : TImage ; X : integer ; Jump : integer );
var
Schritt, i : integer ;
begin
//==HORIZONTALE=BEWEGUNG==
if X > 0 then ShowFighter(Image, 'Rechts', true) ; // Rechts, Links bei Bewegung
if X < 0 then ShowFighter(Image, 'Links', true) ;
Image.Left := Image.Left + (X) ;
//==VERTIKALE=BEWEGUNG==
if Jump > 0 then begin
for i := 1 to Round(Jump/32) do begin
Image.Top := Image.Top - 32 ;
sleep(10);
Image.Repaint;
end;
sleep(100);
for i := 1 to Round(Jump/64) do begin
Image.Top := Image.Top + 64 ;
sleep(10);
Image.Repaint;
end;
end;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
ShowFighter(imgFighter1, 'Rechts', true ) ;
frmMain.DoubleBuffered := true ;
end;
procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_LEFT then MoveFighter (imgFighter1, LeftMove , NoJump );
if Key=VK_RIGHT then MoveFighter(imgFighter1, RightMove, NoJump );
if Key=VK_UP then MoveFighter (imgFighter1, NoMove , Jumphigh );
if Key=VK_DOWN then MoveFighter (imgFighter2, LeftMove , NoJump ); //TEST, damit man 2 auf einmal bewegen kann
end;
end.
Wenn jetzt RUNTER und LINKS auf einmal drückt, bewegt sich nur 1 Image. Wie kann man das proggen, das sich beide bewegen?