Уважаемые форумчане ! Помогите переделать этот кусок кода так, чтобы гусеница ползала по рабочему столу ... Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) Timer1: TTimer; Image1: TImage; Timer2: TTimer; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); private { Private declarations } public { Public declarations } end;
var //Инициализация переменных насекомых Form1: TForm1; MyImage: array[1..2] of TImage; ImgMass: array[1..6] of TBitMap; shagx1,shagx2,shagy2:integer; spr1,spr2,sprmin,sprmax:word; move:string; //Инициализация переменных Космоса starsx: array [0..400] of integer; starsy: array [0..400] of integer; Xmin,Ymin,Xmax,Ymax:integer; i:integer;
//Пуск implementation
{$R *.DFM}
//Процедура создания Формы procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin //Далее создаём графические объекты динамически MyImage[1]:=TImage.Create(Form1); For i:=1 to 4 Do begin ImgMass[i]:=TBitMap.Create; ImgMass[i].LoadFromFile('Worm'+IntToStr(i)+'.bmp'); end; sprmin:=1; sprmax:=4; spr1:=sprmin; shagx1:=-4; move:='left'; MyImage[1].Left:=400; MyImage[1].Top:=100; //Создаём Космическое пространство Randomize; Xmin:=0; Xmax:=640; Ymin:=0; Ymax:=480; Form1.Image1.Canvas.Brush.Color:=clBlack; Form1.Image1.Canvas.FillRect(Rect(Xmin,Ymin,Xmax,Ymax)); Form1.Image1.Width:=640; Form1.Image1.Height:=480; Form1.Image1.Canvas.Brush.Color:=clWhite; For I:=1 to 400 Do begin StarsX[I]:=Random(Xmax); StarsY[I]:=Random(Ymax); Form1.Image1.Canvas.FillRect(Rect(starsx[i],starsy[i],starsx[i]+1,starsy[i]+1)); end; end;
//Процедура разрушения формы и освобождение системных ресурсов созданных ранее procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var i:integer; begin For i:=1 to 4 Do begin ImgMass[i].Free; end; MyImage[1].Free; end;
//Создаём таймер, который будет менять картинки с заданным промежутком времени procedure TForm1.Timer1Timer(Sender: TObject); const xmin=0; ymin=0; xmax=614; ymax=480; var x,y:integer; begin //Загружаем изображение Гусеницы в объект MyImage[1].Picture.Assign(ImgMass[spr1]); MyImage[1].Visible:=True; MyImage[1].AutoSize:=True; MyImage[1].Parent:=Form1; MyImage[1].Left:=MyImage[1].Left+shagx1; //Делаем так чтобы Гусеница ползала от края до края и так далее If MyImage[1].Left<xmin then begin shagx1:=4; move:='right'; end; If MyImage[1].Left>xmax then begin shagx1:=-4; move:='left'; end; spr1:=spr1+1; //Гусеница ползёт влево If (move='left') and (spr1>2) then begin spr1:=1; spr2:=5; end; //Гусеница ползёт вправо If (move='right') and (spr1>4) then begin spr1:=3; spr2:=6; end; end;
procedure TForm1.Timer2Timer(Sender: TObject); var i,j:integer; begin //Создаём мигание звёзд Form1.Image1.Canvas.Brush.Color:=clBlack; i:=Random(400); Form1.Image1.Canvas.FillRect(Rect(starsx[i],starsy[i],starsx[i]+1,starsy[i]+1)); Form1.Image1.Canvas.Brush.Color:=clWhite; j:=Random(400); Form1.Image1.Canvas.FillRect(Rect(starsx[j],starsy[j],starsx[j]+1,starsy[j]+1)); i:=Random(400); end;
end.
|
Спасибо, что просмотрели пример ! Добавлено через 6 минут и 31 секундуСделал так, но ползает она только в форме. А как сделать чтобы она ползала на рабочем столе ? Как червячки из Norton Commander 4.0 ...
|