zmieniłem sobie kod z pascala na delphi (kod do pascala: kody źródłowe>>pascal>>fontanna.rar)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
PROCEDURE move;
PROCEDURE reset;
PROCEDURE rysuj;
PROCEDURE testuj_kierunek;
end;
var
Form1: TForm1;
opek : boolean;
pozycja_x,pozycja_y,predkosc_x,predkosc_y, szybkosc_opadania,kierunek_x,kierunek_y :real;
implementation
{$R *.DFM}
PROCEDURE Tform1.reset;
begin
pozycja_x:=160;
pozycja_y:=170;
predkosc_x:=(random(5)+1)/10+(random(2)+1)/4;
predkosc_y:=(random(3)+1)/10+(random(2)+1)/2;
szybkosc_opadania:=(random(3)+1)/160;
kierunek_y:=-1;
kierunek_x:=random(2);
if kierunek_x=0 then
begin
kierunek_x:=-1;
end;
end;
PROCEDURE Tform1.testuj_kierunek;
begin
if (kierunek_y=-1) and (predkosc_y<=0) then
begin
kierunek_y:=1;
end;
if (pozycja_y>198) or (pozycja_y<1)then
begin
reset;
end;
if (pozycja_x>318) or (pozycja_x<1) then
begin
reset;
end;
end;
PROCEDURE Tform1.move;
begin
testuj_kierunek;
pozycja_x:=pozycja_x + (kierunek_xpredkosc_x);
predkosc_y:=predkosc_y + (szybkosc_opadaniakierunek_y);
pozycja_y:=pozycja_y + (predkosc_y*kierunek_y);
end;
PROCEDURE tform1.rysuj;
begin
image1.canvas.pixels[trunc(pozycja_x),trunc(pozycja_y)] := clblack;
move;
image1.canvas.pixels[trunc(pozycja_x),trunc(pozycja_y)] := clblack;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
opek := false;
randomize;
{for loop:=1 to 30 do
begin
setcol(loop,0,63-loop,63-loop);
end; }
{
for loop:=1 to 1000 do
begin
application.ProcessMessages;
w_krople[loop].reset;
end; }
application.ProcessMessages;
repeat
application.ProcessMessages;
sleep(100);
application.ProcessMessages;
form1.image1.picture := nil;
application.ProcessMessages;
rysuj;
until opek = true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
opek := false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
opek := true;
end;
end.
i rysuje mi tylko jeden piksel a ja chce any mi rysowało gdzieś np. 400 takich pikseli gdzie indziej :)