Здравствуйте! Нужно написать программу движения небольшой фигуры (крестик) вдоль формы. Программу написал, но при запуске вместо движения крестика выходит не совсем то. Это показано на скриншоте ниже.
 Где я ошибся?
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;
type TForm1 = class(TForm) Timer: TTimer; procedure FormCreate(Sender: TObject); procedure TimerTimer(Sender: TObject);
private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
//установить начальные значения при активизации формы procedure TForm1.FormCreate(Sender: TObject); var x,y:integer; begin x:=0; y:=100; Form1.Color:=clNavy; Timer.Interval:=50; end;
//процедура создания фигуры procedure figura(x,y:integer; color:tcolor); const dx=5; dy=5; var buf:tcolor; begin with Form1.Canvas do begin buf:=Pen.Color; Pen.Color:=color; MoveTo(x,y); LineTo(x,y-4*dy); MoveTo(x+2*dx,y-2*dy); LineTo(x-2*dx,y-2*dy); Pen.Color:=buf; end; end;
//перерисовка изображения procedure TForm1.TimerTimer(Sender: TObject); var x,y:integer; begin figura(x,y,Form1.Color); //закрашиваем под цвет формы if x<Form1.ClientWidth then x:=x+5 else begin x:=0; y:=random(50)+100; end; figura(x,y,clWhite); end;
end. |
Проект также прикладываю ниже. |