passt auf jungs
hier der gesamte quelltext
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TSnake = class(TObject)
private
//private Dekleration
rTeile: array[0..40*30-1] OF TPoint;
rAnzahlTeile : Word;
rCanvas : TCanvas;
function LiesTeil( Index : Word): TPoint;
public
//Öffentliche Dekleration
property Teile [ Index : Word ] : TPoint read LiesTeil;
property AnzahlTeile : Word read rAnzahlTeile;
property Canvas : TCanvas read rCanvas write rCanvas;
procedure Init();
procedure Render();
end;
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
private
{ Private-Deklarationen }
Schlange : TSnake;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ --- Snake Bereich --- }
function TSnake.LiesTeil( Index : Word) : TPoint;
begin
result:= rTeile [ Index ];
end;
procedure TSnake.Init();
begin
rAnzahlTeile :=2;
rTeile[0] := Point ( 2, 0 );
rTeile[0] := Point ( 1, 0 );
rTeile[0] := Point ( 0, 0 );
end;
procedure TSnake.Render();
var
Index : Word;
StartX, StartY : integer;
EndeX, EndeY : integer;
begin
rCanvas.Pen.Color:= clGreen;
rCanvas.Brush.Color:= clGreen;
for Index :=0 to rAnzahlTeile do
begin
StartX := rTeile[Index].X = 16;
EndeX := rTeile[ Index ].X = 16 + 16 ;
StartY := rTeile[ Index ].Y = 16 ;
EndeY := rTeile[ Index ].Y = 16 + 16 ;
rCanvas.Ellipse( StartX, StartY, EndeX, EndeY);
end;
end;
{ --- Fenster Bereich --- }
procedure TForm1.FormCreate(Sender: TObject);
begin
Schlange:= TSnake.Create;
Schlange.Canvas := Self.Canvas;
Schlange.Init();
Self.DoubleBuffered := true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Schlange.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Schlange.Render();
end;
end.
komm einfach nicht weiter
viel glück