Напишите программу для отображения движения многоугольника (плоской фигуры) по экрану по принципу «угол падения равен углу отражения», поверхностями считать границы экрана. Предусмотреть изменение цвета многоугольника (плоской фигуры) при смене направления движения — Pascal(Паскаль)

uses graph, crt;

var
  x, y, x0, y0, d, r, dx, dy, i: integer;

begin
  x := 0;
  initgraph(x, y, '');
  x0 := getmaxX div 2;
  y0 := getmaxY div 2;
  outtextXY(x0 - 80, 20, 'Vyhod - press any key...');
  d := 200;
  r := 10;
  rectangle(x0 - d, y0 - d, x0 + d, y0 + d);
  x := x0;
  y := y0 - d + r + 1;
  dx := -1;
  dy := 1;
  i := 10;
  repeat
    setcolor(i);
    circle(x, y, r);
    setfillstyle(1, i);
    fillellipse(x, y, r, r);
    delay(10);
    setcolor(0);
    circle(x, y, r);
    setfillstyle(1, 0);
    fillellipse(x, y, r, r);
    x := x + dx;
    y := y + dy;
    if x = x0 - d + r + 2 then
    begin
      dx := 1;
      i := i + 1;
      if i = 16 then
        i := 1;
    end
    else if y = y0 + d - r - 2 then
    begin
      dy := -1;
      i := i + 1;
      if i = 16 then
        i := 1;
    end
    else if x = x0 + d - r - 2 then
    begin
      dx := -1;
      i := i + 1;
      if i = 16 then
        i := 1;
    end
    else if y = y0 - d + r + 2 then
    begin
      dy := 1;
      i := i + 1;
      if i = 16 then
        i := 1;
    end
    until keypressed;

end.

Leave a Comment

27 − 24 =