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; 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); for i:=1 to 50 do begin setcolor(random(16)); Circle(400,80,i); {b[i,1]:=100+random(300); b[i,2]:=400; b[i,3]:=random(130); b[i,4]:=70; SetFillStyle(b[i,4],b[i,3]); bar(b[i,1],b[i,2],b[i,1],b[i,2]+10);} end; setcolor(random(16)); Circle(200,490,12); setcolor(random(16)); Circle(250,425,12); setcolor(random(16)); Circle(350,200,12); setcolor(random(16)); Circle(425,333,12); setcolor(random(16)); Circle(500,444,12); setcolor(random(16)); Circle(600,350,12); until(i=1000); readln; readln; end.