Einzelnen Beitrag anzeigen

Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#33

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 16:33
Also bei mir funktioniert es so:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, mTHintergrund, mTSchlange, mTFutter, mTKopf;

type

  { TForm1 }

  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Timer1Timer(Sender: TObject);

  private
    { Private-Deklarationen }
    Hintergrund : THintergrund;
    Links,Rechts,Hoch,Runter : Boolean;
    Kopf : TKopf;
  public
    { Public-Deklarationen }
    Schlange : TSchlange;
    Futter : TFutter;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Hintergrund:= THintergrund.create(Image1);
  Hintergrund.zeichnen();

  Schlange:= TSchlange.create(Image1.Width div 2,Image1.Height-30,Image1,Futter);

  Kopf:= TKopf.create(Image1.Width div 2 ,Image1.Height-30 ,Image1,Futter);
  Kopf.zeichnen();
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Links := Key = VK_LEFT;
  Rechts := Key = VK_Right;
  Hoch := Key = VK_Up;
  Runter := Key = VK_Down;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   IF (Links = True) and (Kopf.GetZXPosition > 0) Then
     begin
       Kopf.bewege_links();
       Kopf.zeichnen;
     end;
   IF (Rechts = True) and (Kopf.GetZXPosition < 649) Then
     begin
       Kopf.bewege_rechts();
       Kopf.zeichnen;
     end;
   IF (Hoch = True) and (Kopf.GetZYPosition > 0) Then
     begin
       Kopf.bewege_oben();
       Kopf.zeichnen;
     end;
   IF (Runter = True) and (Kopf.GetZYPosition < 481) Then
     begin
       Kopf.bewege_unten();
       Kopf.zeichnen;
     end;
  end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Links := Key = VK_LEFT;
  Rechts := Key = VK_Right;
  Hoch := Key = VK_Up;
  Runter := Key = VK_Down;
end;
end.

Geändert von Ginko (19. Jun 2013 um 16:36 Uhr)
  Mit Zitat antworten Zitat