Наряженная новогодняя ёлка на фоне падающего снега - Free Pascal
Формулировка задачи:
Как сделать наряженную ёлку на фоне падающего снега. Объединила две программы, но не то... Подскажите, как исправить, пожалуйста) Вот код:
Помогите пожалуйста вставить туда нарядную ёлочку)))
uses Crt, Graph; type mas=array[1..500] of Pointtype; const RStart = 40; var x,y,R,gd,gm,i,j,k,n:integer; a:mas; grDriver: Integer; grMode: Integer; ErrCode: Integer; begin grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode = grOk then begin { Do graphics } setcolor(lightgreen); for j := 2 to 6 do begin y := (getmaxy div 10) * j; R := RStart + 15*j; for i := 1 to 5 do begin arc((getmaxx div 2) - R, y, 350-(R div 5)-8*j, 359, R); arc((getmaxx div 2) + R, y, 181, 190+(R div 5)+8*j, R); inc(y, 7); inc(R, 5); end; end; randomize; gd:=0; initgraph(gd,gm,''); for i:=1 to 500 do begin a[i].x:=random(getmaxX); a[i].y:=random(getmaxY); circle(a[i].x,a[i].y,2); end; k:=0;n:=0; repeat k:=k+1; delay(200); setcolor(0); for i:=1 to 500 do circle(a[i].x,a[i].y,2); for i:=1 to 500 do begin if a[i].y>getmaxY-n-10 then a[i].y:=1 else a[i].y:=a[i].y+3; if a[i].x<0 then a[i].x:=getmaxX else a[i].x:=a[i].x-1; end; setcolor(15); for i:=1 to 500 do circle(a[i].x,a[i].y,2); if k mod 20=0 then begin n:=n+1; line(0,getmaxY-n,getmaxX,getmaxY-n); end; until keypressed; Readln; CloseGraph; end else Writeln('Graphics error:', GraphErrorMsg(ErrCode)); end.
Есть код, падающего снега:
uses crt,graph; type mas=array[1..500] of Pointtype; var gd,gm,i,j,k,n:integer; a:mas; begin randomize; gd:=0; initgraph(gd,gm,''); for i:=1 to 500 do begin a[i].x:=random(getmaxX); a[i].y:=random(getmaxY); circle(a[i].x,a[i].y,2); end; k:=0;n:=0; repeat k:=k+1; delay(200); setcolor(0); for i:=1 to 500 do circle(a[i].x,a[i].y,2); for i:=1 to 500 do begin if a[i].y>getmaxY-n-10 then a[i].y:=1 else a[i].y:=a[i].y+3; if a[i].x<0 then a[i].x:=getmaxX else a[i].x:=a[i].x-1; end; setcolor(15); for i:=1 to 500 do circle(a[i].x,a[i].y,2); if k mod 20=0 then begin n:=n+1; line(0,getmaxY-n,getmaxX,getmaxY-n); end; until keypressed; readln end.
Код ёлочки:
uses Crt, Graph; const RStart = 40; var grDriver: Integer; grMode: Integer; ErrCode: Integer; x, y, R: integer; i, j: integer; begin grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode = grOk then begin { Do graphics } setcolor(lightgreen); for j := 2 to 6 do begin y := (getmaxy div 10) * j; R := RStart + 15*j; for i := 1 to 5 do begin arc((getmaxx div 2) - R, y, 350-(R div 5)-8*j, 359, R); arc((getmaxx div 2) + R, y, 181, 190+(R div 5)+8*j, R); inc(y, 7); inc(R, 5); end; end; Readln; CloseGraph; end else Writeln('Graphics error:', GraphErrorMsg(ErrCode)); end.
необходимо объединить, и разукрасить саму ёлочку...
Решение задачи: «Наряженная новогодняя ёлка на фоне падающего снега»
textual
Листинг программы
uses wincrt,graph; const rstart=40; type mas=array[1..500] of Pointtype; procedure snezinki(a:mas;c:integer); var i:integer; begin setcolor(c); for i:=1 to 500 do circle(a[i].x,a[i].y,2); end; procedure elka; var y,r,i,j:integer; begin setcolor(green); for j:=2 to 6 do begin y:=(getmaxy div 10)*j+120; r:=rstart+15*j; for i:=1 to 5 do begin arc((getmaxx div 2)-r,y,350-(r div 5)-8*j,359,r); arc((getmaxx div 2)+r,y,181,190+(r div 5)+8*j,r); inc(y,7); inc(r,5); end; end; end; procedure sneg(n:integer); begin setcolor(white); setfillstyle(1,white); bar(0,getmaxY-n,getmaxX,getmaxY); end; var gd,gm,i,k,n:integer; a:mas; begin randomize; gd:=0; initgraph(gd,gm,''); for i:=1 to 500 do begin a[i].x:=random(getmaxX); a[i].y:=random(getmaxY); end; setcolor(blue); setfillstyle(1,blue); bar(0,0,getmaxX,getmaxY);{делаем синий фон} snezinki(a,white);{рисуем снежинки} k:=0;{количество шагов} repeat k:=k+1; delay(10); snezinki(a,blue);{рисуем снежинки цветом фона, стираем} for i:=1 to 500 do begin if a[i].y>getmaxY-n-10 then a[i].y:=1 else a[i].y:=a[i].y+3; if a[i].x<0 then a[i].x:=getmaxX else a[i].x:=a[i].x-1; end; snezinki(a,white);{рисуем снежинки белым} elka; {рисуем елку} n:=k div 10;{на каждом 10-м шаге увеличиваем толщину снега на земле} sneg(n);{рисуем снег на земле} if n>50 then{если толщина снега 50} begin snezinki(a,blue);{стираем снежинки} setcolor(lightred);{выводим надписи} settextstyle(0,0,3); outtextXY(250,50,'Snegopad konchilsa'); setcolor(yellow); settextstyle(0,0,2); outtextXY(340,80,'Press any key'); end; until keypressed or(n>50);{если нажали клавишу или снег>50 конец} readkey{ждем нажатия клавиши для выхода} end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д