GAECHKA
Твоя помощница в решении задач

Флаг

Нарисовать флаг Антуан и Барбуда(через команды move to(),line to(),чтоб все просто было об'яснить)
или этот код подробно расписать что есть что.
program flag;
uses GraphAbc;
var
  h,w,i:integer;
  h3,w6,w2:integer;
  p:array of Point;
  alpha,dalpha:real;
begin
 MaximizeWindow;
 setwindowsize(1340,768);
 h:=WindowHeight;
 h3:=h div 3;
 w:=WindowWidth;
 w6:=w div 6;w2:=w div 2;
 ClearWindow(clRed);
  SetBrushColor(clBlack);
 FillPolygon(Arr(new Point(0,0),new Point(w,0),
                 new Point(w2+w6*2,h-h3*2),new Point(w2-w6*2,h-h3*2)));
 SetBrushColor(clYellow);
 SetLength(p,36);
 alpha:=Pi/2;
 dalpha:=pi/18;
 for i:=0 to 35 do begin
   if odd(i) then p[i]:=(w2+round(w6/2*cos(alpha)),h-h3*2-round(w6/2*sin(alpha)))
             else p[i]:=(w2+round(w6/4*cos(alpha)),h-h3*2-round(w6/4*sin(alpha)));
   alpha:=alpha+dalpha;
 end;
 FillPolygon(p);
 SetBrushColor(clWhite);                
 FillPolygon(Arr(new Point(w2-w6,h-h3),new Point(w2+w6,h-h3),
                 new Point(w2,h)));
 SetBrushColor(clBlue);
 FillPolygon(Arr(new Point(w2-w6,h-h3),new Point(w2+w6,h-h3),
                 new Point(w2+w6*2,h-h3*2),new Point(w2-w6*2,h-h3*2)));
end.
0
вопрос задан

Источник


2 ответа
в среде pascalabc.net встать на непонятное слово и нажать F1 самому никак?
Упрощенная программа с дополнительными комментариями:
uses GraphAbc;
begin
  MaximizeWindow;
  var(w,h):=(Window.Width,Window.Height); // ширина и высота окна
  var(w6,w2,h3):=(w div 6,w div 2,h div 3); // 1/6 и 1/2 ширины, 1/3 высоты
  var angle:=pi/18;
 
  // Чёрный фон
  Window.Clear(clBlack);
 
  // Солнце
  SetBrushColor(clYellow);
  FillPolygon(0.to(18).Select(i->(
    w2    +round(cos(angle*i)*(w6 div (odd(i)?2:1))),
    h-h3*2-round(sin(angle*i)*(w6 div (odd(i)?2:1)))
  )).ToArray);
   
  // голубая полоса
  SetBrushColor(clBlue);
  Rectangle(0,h3,w,h);
  
  // белая полоса
  SetBrushColor(clWhite);                
  Rectangle(0,h-h3,w,h);
 
  // Красные треугольники
  SetBrushColor(clRed);
  FillPolygon((0,0),(w2,h),(w,0),(w,h),(0,h));
end.
Andrey0965, чтобы посмотреть (и проанализировать что к чему ;–), можете закомментировать любую часть программы ниже шестой строки и посмотреть результат при запуске программы.