Отрисовка изображения в разных координатах - Turbo Pascal

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

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

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

Решение задачи: «Отрисовка изображения в разных координатах»

textual
Листинг программы
Program newyear;
uses graph,crt;
Var
  g,m:integer;
  t,s:pointer;
  a:array[1..20,1..2]of integer;
Begin
g:=detect;
initgraph(g,m,'');
{}
SetColor(white);
Line(2,2,8,8);
Line(2,8,8,2);
Line(5,0,5,10);
Line(0,5,10,5);
{}
GetMem(s,ImageSize(0,0,10,10));
GetImage(0,0,10,10,s^);
ClearDevice;
{}
SetColor(green);
SetFillStyle(1,green);
Line(60,10,35,60);
Line(85,60,35,60);
Line(85,60,60,10);
FloodFill(60,15,green);
Line(60,60,22,110);
Line(97,110,22,110);
Line(97,110,60,60);
FloodFill(60,70,green);
Line(60,110,10,160);
Line(10,160,110,160);
Line(110,160,60,110);
FloodFill(60,120,green);
{}
SetColor(yellow);
SetFillStyle(1,yellow);
Circle(60,10,7);
FloodFill(60,10,yellow);
Circle(35,60,3);
FloodFill(35,60,yellow);
Circle(60,60,3);
FloodFill(60,60,yellow);
Circle(85,60,3);
FloodFill(85,60,yellow);
Circle(22,110,3);
FloodFill(22,110,yellow);
Circle(60,110,3);
FloodFill(60,110,yellow);
Circle(97,110,3);
FloodFill(97,110,yellow);
Circle(10,160,5);
FloodFill(10,160,yellow);
Circle(110,160,5);
FloodFill(110,160,yellow);
{}
SetColor(brown);
Rectangle(55,161,65,170);
SetFillStyle(1,brown);
FloodFill(57,163,brown);
{}
SetLineStyle(0,0,3);
SetColor(White);
SetFillStyle(5,11);
setcolor(blue);
FillEllipse(60,35,5,10);
Fillellipse(60,85,5,10);
Fillellipse(60,135,5,10);
{}
GetMem(t,ImageSize(0,0,120,170));
GetImage(0,0,120,170,t^);
ClearDevice;
{}
Setcolor(red);
OutTextxy(250,10,'Happy New Year');
SetTextStyle(4,2,10);
{}
for g:=0 to 5 do
  PutImage(g*95,g*30,t^,OrPut);
{}
for g:=1 to 20 do
  begin
    a[g,1]:=g*20 + random(20);
    a[g,2]:=20*random(20);
  end;
repeat
  {}
  for g:=1 to 20 do
    begin
      a[g,1]:=a[g,1]+5*(1-2*random(1));
      a[g,2]:=a[g,2]+2;
    end;
  for g:=1 to 20 do
    begin
      if a[g,2]>600 then a[g,2]:=0;
      if a[g,1]>300 then a[g,1]:=0;
    end;
  for g:=1 to 20 do
    PutImage(a[g,2],a[g,1],s^,XorPut);
  delay(50);
  for g:=1 to 20 do
    PutImage(a[g,2],a[g,1],s^,XorPut);
until KeyPressed;
readln;
closegraph;
end.

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


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

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

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