Einzelnen Beitrag anzeigen

Coxy

Registriert seit: 27. Mär 2011
28 Beiträge
 
#1

random befehl funktoniert nicht

  Alt 27. Mär 2011, 18:02
Delphi-Version: 6
Hallo zusammen,
Wir sollen für die Schule ein Spiel mit Delphi erstellen (als Projekt). Leider komme ich gerade nicht weiter: ich bekomme meinen random Befehl nicht zum laufen und bräuchte Hilfe. (In der Letzten Zeile ist der Befehl).

Delphi-Quellcode:
vunit Unit1;

interface

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

type
  TForm1 = class(TForm)
    SHP_BALL: TShape;
    Timer_Ball: TTimer;
    img_Boese: TImage;
    Timer_Boese: TTimer;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Timer_BallTimer(Sender: TObject);
    procedure Timer_BoeseTimer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
 var
hoch, runter, links, rechts, richtung, zahl :integer;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

if key = vk_up then hoch:= 1;
if key = vk_down then runter:= 1;
if key = vk_left then links:= 1;
if key = vk_right then rechts:= 1;

end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

if key = vk_up then hoch:= 0;
if key = vk_down then runter:=0;
if key = vk_left then links :=0;
if key = vk_right then rechts :=0;
end;

procedure TForm1.Timer_BallTimer(Sender: TObject);
begin
if (hoch = 1) and (shp_ball.Top - 6 > 0) then shp_ball.Top := shp_ball.Top -5;
if (runter = 1) and (shp_ball.Top + shp_ball.Height + 35 < form1.Height) then shp_ball.Top := shp_ball.Top +5;
if (links = 1) and (shp_ball.Left + 5 > 0) then shp_ball.Left := shp_ball.Left -5;
if (rechts = 1) and (shp_ball.Left + shp_ball.Width + 12 < form1.Width) then shp_ball.Left := shp_ball.Left +5;

if (hoch = 1) and (shp_ball.Height > 100) then shp_ball.height := shp_ball.height - 1;

if runter = 1 then shp_ball.Brush.Color := clRed;




end;

procedure TForm1.Timer_BoeseTimer(Sender: TObject);
begin

If (richtung=1) and (img_Boese.Top + img_Boese.Height + 30 > form1.Height) then richtung :=2;
If (richtung=2) and (img_Boese.Left + img_Boese.Width + 30 > form1.Width) then richtung :=3;
If (richtung=3) and (img_Boese.Top < 10) then richtung := 4;
If (richtung=1) and (img_Boese.Left < 10) then richtung :=1;

If (richtung=2) and (img_Boese.Top < 1) then richtung :=1;
If (richtung=1) and (img_Boese.Left + img_Boese.Width + 30 > form1.Width) then richtung :=4;
If (richtung=4) and (img_Boese.Top + img_Boese.Height + 30 > form1.Height) then richtung := 3;
If (richtung=3) and (img_Boese.Left < 10) then richtung :=2;

case richtung of
1: Begin
img_Boese.Top := img_Boese.Top + 1;
img_Boese.Left := img_Boese.Left + 1;
end;

2: Begin
img_Boese.Top := img_Boese.Top - 1;
img_Boese.Left := img_Boese.Left + 1;
end;

3: Begin
img_Boese.Top := img_Boese.Top - 1;
img_Boese.Left := img_Boese.Left - 1;
end;

4: Begin
img_Boese.Top := img_Boese.Top + 1;
img_Boese.Left := img_Boese.Left - 1;
end;
end;

if (richtung=1) then zahl:=random(1);

if (zahl=1) then img_Boese.Visible := false;



end;

PS: Gibt es eigentlich eine gute Seite mit der man lernen kann Delphi spiele zu programmieren (z.B Kollisionen zwischen figuren usw.)

Grüße

Geändert von Matze (27. Mär 2011 um 20:43 Uhr) Grund: [quote]- durch [delphi]-Tags ersetzt. MfG Matze
  Mit Zitat antworten Zitat