theo hat geschrieben:Das Problem ist wahrscheinlich in Unit1. Entweder du createst "stamm" gar nicht oder falsch.
Dann liefere ich mal die Unit1 nach!
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
lResources, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
ExtCtrls, unit2;
type
tball=class
farbe: tColor;
x,y,vx,vy,r : double;
procedure Init(fneu:tColor;xneu,yneu,vxneu,vyneu,rneu:double);
procedure ZeigeDich;
procedure BewegeDich;
end;
{ TForm1 }
TForm1 = class(TForm)
Bild: TImage;
Timer1: TTimer;
procedure BildClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
ball: TBall;
stamm: tstamm;
implementation
{ TForm1 }
procedure TForm1.BildClick(Sender: TObject);
begin
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
bild.canvas.pen.width:=4;
bild.canvas.brush.Color:=clwhite;
bild.canvas.rectangle(0,0,bild.width, bild.height);
bild.canvas.pen.width:=2;
ball.init(clred,20,20,20,20,20);
stamm.init (200,200)
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Ball.ZeigeDich;
bild.canvas.Pixels[Round(ball.x),round(ball.y)]:=clBlack;
Ball.BewegeDich;
Ball.ZeigeDich;
end;
procedure tball.Init(fneu:tColor; xneu,yneu,vxneu,vyneu,rneu:double);
begin
farbe:=fNeu;
x:=xneu;
y:=yneu;
vx:=vxneu;
vy:=vyneu;
r:=rneu;
//showmessage(inttostr(farbe))
end;
procedure tball.Zeigedich;
begin
form1.bild.canvas.Brush.color:=farbe;
form1.bild.canvas.ellipse(round(x-r),round(y-r),round(x+r),round(y+r));
form1.bild.canvas.pen.mode:=pmNOTXOR;;
//showmessage('test')
end;
procedure tball.Bewegedich;
begin
x:=x+vx;
y:=y+vy;
if y>form1.bild.height-r-1 then
begin
y:=form1.bild.height-r-1;
vy:=-vy;
end;
end;
initialization
ball:=tball.create;
{$I unit1.lrs}
finalization
ball.destroy;
end.
{$R *.lfm}
end.
Ich hoffe du kannst mir helfen, da ich schon zwei Tage nach einer Lösung suche!