Рисование падающего снега - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

нужно нарисовать падающий снег в паскаль авс нет, так чтобы он падал поверх этой елки.Нужно так чтобы снежинки вверху появлялись спускались вниз и исчезали. вот программа с елкой

Решение задачи: «Рисование падающего снега»

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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы