Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Гусеница на рабочем столе


Автор: GLX 5.8.2016, 23:09
Уважаемые форумчане ! Помогите переделать этот кусок кода так, чтобы гусеница ползала по рабочему столу ...

Код

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 ...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)