program choinka; uses graph, crt; var i,j: integer; znak:char; s:array [1..300,1..3] of integer; b:array [1..20,1..4] of integer; procedure menu(); var gm,dm: smallint; i,j: integer; begin gm:=d8bit; dm:=m800x600; initgraph(gm,dm,''); setcolor(2); line(1,550,800,550); setcolor(2); line(400,550,400,100); for i:=1 to 15 do begin setcolor(2); line(400,50+i*25,400+i*25,100+i*29); setcolor(2); line(400,50+i*25,400-i*25,100+i*29); end; for i:=1 to 300 do begin s[i,1]:=1+random(799); s[i,2]:=1+random(550); s[i,3]:=0; end; for i:=1 to 50 do begin b[i,1]:=10; b[i,2]:=10; b[i,3]:=random(13); b[i,4]:=1; bar(b[i,1],b[i,2],b[i,3],b[i,1]); end; end; procedure snieg(); var i,j: integer; begin for i:=1 to 300 do begin if s[i,2]<540 then putpixel(s[i,1],s[i,2],s[i,3]) //else if s[i,1] mod 2 = 1 then putpixel(s[i,1],s[i,2],15) else if random(1000) mod 10 = 3 then putpixel(s[i,1],s[i,2],15) else putpixel(s[i,1],s[i,2],s[i,3]); s[i,1]:=s[i,1]+2-random(5); s[i,2]:=s[i,2]+1; if s[i,2]>550 then s[i,2]:=1; if getpixel(s[i,1],s[i,2])=15 then s[i,3]:=0 else s[i,3]:=getpixel(s[i,1],s[i,2]); putpixel(s[i,1],s[i,2],15); end; end; begin menu(); repeat snieg(); delay(25); until(i=1000); readln; readln; end.