Einzelnen Beitrag anzeigen

louisnws

Registriert seit: 3. Feb 2012
10 Beiträge
 
#13

AW: kleine Anfängerfrage

  Alt 4. Feb 2012, 00:13
Also Ich brauche immernoch Hilfe ich hab es jetzt mal zum vereinfachen umgestellt von Buttons zu KEYS
Hier der Quelltext

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);


  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  MannX: Integer;
  MannY: Integer;
  JagdX: Integer;
  JagdY: Integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Visible := false;
Canvas.Brush.Color := clred;
Form1.Canvas.Rectangle(MannX,MannY,MannX+50,MannY+50);
Form1.Canvas.Rectangle(JagdX,JagdY,JagdX+50,JagdY+50);
  if (MannX + 50 > JagdX) and (MannX < JagdX + 50) and {3} (MannY + 50 > JagdY) and (MannY < JagdY+50) then
  begin
    JagdX := Random(4000) + 1;
    JagdY := Random(4000) + 1;
    Canvas.Rectangle(JagdX, JagdY, JagdX + 50, JagdY + 50); // 2
  end;
end;




procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key= Ord('W') then
begin
dec(mannY,5);
Form1.Refresh;
Canvas.Rectangle(MannX,MannY,MannX + 50,MannY+50);
JagdX:=random(40)+1;
JagdY:=random(40)+1;
Form1.Canvas.Rectangle(JagdX,JagdY,JagdX+50,JagdY+50);
end;
if Key= Ord('S') then
begin
inc(MannY,5);
Form1.Refresh;
Canvas.Rectangle(MannX,MannY,MannX + 50,MannY+50);
JagdX:=random(40)+1;
JagdY:=random(40)+1;
Form1.Canvas.Rectangle(JagdX,JagdY,JagdX+50,JagdY+50);
end;
if Key= Ord('A') then
begin
Dec(MannX,5);
Refresh;
Canvas.Rectangle(MannX,MannY,MannX + 50,MannY+50);
inc(JagdX, random(41)-20) ;
inc(JagdY, random(41)-20) ;
Canvas.Rectangle(JagdX,JagdY,JagdX+50,JagdY+50);
end;
if Key= Ord('D') then
begin
//rechts
inc(MannX,5);
Form1.Refresh;
Canvas.Rectangle(MannX,MannY,MannX + 50,MannY+50);
JagdX:=random(40)+1;
JagdY:=random(40)+1;
Form1.Canvas.Rectangle(JagdX,JagdY,JagdX+50,JagdY+50);
end;
end;


end.



Fehlerbeschreibung:
- das Quadrat das gefangen werden soll bewegt sich nur oben Links
- Das Quadrat erscheint nicht sonstwoanders wenn ich es treffe verschindet sogar nichtmal

Fragen:
-Ich hab jetzt
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Visible := false;
Canvas.Brush.Color := clred;
Form1.Canvas.Rectangle(MannX,MannY,MannX+50,MannY+50);
Form1.Canvas.Rectangle(JagdX,JagdY,JagdX+50,JagdY+50);
  if (MannX + 50 > JagdX) and (MannX < JagdX + 50) and {3} (MannY + 50 > JagdY) and (MannY < JagdY+50) then
  begin
    JagdX := Random(4000) + 1;
    JagdY := Random(4000) + 1;
    Canvas.Rectangle(JagdX, JagdY, JagdX + 50, JagdY + 50); // 2
  end;
end;
Button 1 ist der START Button
Warum springt das Objekt nicht wie verrückt wo ich doch
Delphi-Quellcode:
JagdX := Random(4000) + 1;
    JagdY := Random(4000) + 1;
das hier gemacht hab also randon(4000) ist dochziemlich hoch oder?
  Mit Zitat antworten Zitat