Рисование падающего снега - PascalABC.NET
Формулировка задачи:
нужно нарисовать падающий снег в паскаль авс нет, так чтобы он падал поверх этой елки.Нужно так чтобы снежинки вверху появлялись спускались вниз и исчезали.
вот программа с елкой
Листинг программы
- uses graphabc;
- var a:integer;
- procedure shary(x:integer);
- begin
- floodfill(120,75,clrandom);
- floodfill(160,95,clrandom);
- floodfill(130,110,clrandom);
- floodfill(155,60,clrandom);
- floodfill(200,105,clrandom);
- floodfill(150,165,clrandom);
- floodfill(120,190,clrandom);
- floodfill(170,210,clrandom);
- floodfill(140,220,clrandom);
- floodfill(100,230,clrandom);
- floodfill(190,180,clrandom);
- floodfill(200,240,clrandom);
- floodfill(150,300,clrandom);
- floodfill(120,330,clrandom);
- floodfill(180,340,clrandom);
- floodfill(140,360,clrandom);
- floodfill(90,370,clrandom);
- floodfill(190,380,clrandom);
- floodfill(230,370,clrandom);
- end;
- begin
- setpencolor(clgreen);
- line(150,25,75,125);
- line(150,25,225,125);
- line(225,125,75,125);
- line(150,125,50,250);
- line(150,125,250,250);
- line(50,250,250,250);
- line(150,250,25,400);
- line(150,250,275,400);
- line(25,400,275,400);
- setpencolor(clbrown);
- rectangle(125,400,175,500);
- floodfill(150,75,clgreen);
- floodfill(150,200,clgreen);
- floodfill(150,325,clgreen);
- floodfill(150,450,clbrown);
- setpencolor(clblack);
- circle(120,75,10);
- circle(160,95,10);
- circle(130,110,10);
- circle(155,60,10);
- circle(200,105,10);
- circle(150,165,10);
- circle(120,190,10);
- circle(170,210,10);
- circle(140,220,10);
- circle(100,230,10);
- circle(190,180,10);
- circle(200,240,10);
- circle(150,300,10);
- circle(120,330,10);
- circle(180,340,10);
- circle(140,360,10);
- circle(90,370,10);
- circle(190,380,10);
- circle(230,370,10);
- while true do
- shary(1);
- end.
Решение задачи: «Рисование падающего снега»
textual
Листинг программы
- uses graphabc;
- const m=200;
- type mas=array[1..m] of integer;
- procedure fon;
- begin
- setpencolor(clgreen);
- line(150,25,75,125);
- line(150,25,225,125);
- line(225,125,75,125);
- line(150,125,50,250);
- line(150,125,250,250);
- line(50,250,250,250);
- line(150,250,25,400);
- line(150,250,275,400);
- line(25,400,275,400);
- setpencolor(clbrown);
- rectangle(125,400,175,500);
- floodfill(150,75,clgreen);
- floodfill(150,200,clgreen);
- floodfill(150,325,clgreen);
- floodfill(150,450,clbrown);
- setpencolor(clblack);
- end;
- procedure shary(x:integer);
- begin
- setbrushcolor(clrandom);
- circle(120,75,10);
- setbrushcolor(clrandom);
- circle(160,95,10);
- setbrushcolor(clrandom);
- circle(130,110,10);
- setbrushcolor(clrandom);
- circle(155,60,10);
- setbrushcolor(clrandom);
- circle(200,105,10);
- setbrushcolor(clrandom);
- circle(150,165,10);
- setbrushcolor(clrandom);
- circle(120,190,10);
- setbrushcolor(clrandom);
- circle(170,210,10);
- setbrushcolor(clrandom);
- circle(140,220,10);
- setbrushcolor(clrandom);
- circle(100,230,10);
- setbrushcolor(clrandom);
- circle(190,180,10);
- setbrushcolor(clrandom);
- circle(200,240,10);
- setbrushcolor(clrandom);
- circle(150,300,10);
- setbrushcolor(clrandom);
- circle(120,330,10);
- setbrushcolor(clrandom);
- circle(180,340,10);
- setbrushcolor(clrandom);
- circle(140,360,10);
- setbrushcolor(clrandom);
- circle(90,370,10);
- setbrushcolor(clrandom);
- circle(190,380,10);
- setbrushcolor(clrandom);
- circle(230,370,10);
- end;
- procedure snezinki(x,y:mas);
- var i:integer;
- begin
- setpencolor(clWhite);
- setbrushcolor(clWhite);
- for i:=1 to m do
- circle(x[i],y[i],2);
- end;
- var x,y:mas;
- i,j,k,n:integer;
- begin
- randomize;
- clearwindow(clBlue);
- for i:=1 to m do
- begin
- x[i]:=random(windowwidth);
- y[i]:=random(windowheight);
- circle(x[i],y[i],2);
- end;
- lockdrawing;
- k:=0;n:=0;
- while true do
- begin
- clearwindow(clBlue);
- fon;
- shary(1);
- snezinki(x,y);
- k:=k+1;
- sleep(10);
- for i:=1 to m do
- begin
- if y[i]>windowheight-n-10 then y[i]:=1
- else y[i]:=y[i]+3;
- if x[i]<0 then x[i]:=windowwidth
- else x[i]:=x[i]-1;
- end;
- //рисуем увеличивающийся слой снега на земле(если хотите)
- if k mod 20=0 then n:=n+1;
- rectangle(0,windowheight-n,windowwidth,windowheight);
- redraw;
- end;
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д