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