Отскок шарика от стенки - PascalABC.NET

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

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

Подскажите пожалуйста как сделать чтобы шарик стукался от стенки до стенки в любую сторону. При это чтоб шарик менял цвет когда стукался.

Решение задачи: «Отскок шарика от стенки»

textual
Листинг программы
uses GraphAbc;
var
  x,y,dx,dy,r:integer;
  C,B:System.Drawing.Color;
procedure dxdy(var dx,dy:integer;var c:System.Drawing.Color;b:System.Drawing.Color);
var
  tx,ty:integer;
begin
repeat
  tx:=random(3)-1;
  ty:=random(3)-1;
until ((tx<>0) or (ty<>0)) and (tx<>dx) and (ty<>dy);
dx:=tx;dy:=ty;
repeat c:=clRandom; until c<>b;
end;
begin
  r:=10;
  randomize;
  SetWindowHeight(480);
  SetWindowWidth(640);
  SetWindowIsFixedSize(true);
  b:=clGreen;
  SetBrushColor(b);
  SetPenColor(b);
  FillRectangle(0,0,WindowWidth,WindowHeight);
  x:=random(640);
  y:=random(480);
  dxdy(dx,dy,c,b);
  repeat
    LockDrawing;
    SetBrushColor(b);
    circle(x,y,r);
    SetBrushColor(c);
    if (x+dx>Window.Width-r) or (x+dx<r) or (y+dy>WindowHeight-r) or (y+dy<r) then begin
      dxdy(dx,dy,c,b);
    end else begin  
      x:=x+dx;
      y:=y+dy;
      Circle(x,y,r);
    end;
    UnlockDrawing;
  until false;
end.

Объяснение кода листинга программы

  1. Объявлены переменные: x, y, dx, dy, r (строки 5-9)
  2. Задана функция dxdy, которая принимает на вход и изменяет переменные dx, dy, c и b (строка 10)
  3. Задана основная функция, которая начинается с задания переменной r (строка 17)
  4. Задано значение по умолчанию для переменных x, y (строка 18)
  5. Задано значение по умолчанию для переменных dx, dy (строка 19)
  6. Задано значение по умолчанию для переменных c и b (строка 20)
  7. Очищена область рисования (строка 21)
  8. Задано значение по умолчанию для переменных c и b (строка 22)
  9. В основной функции установлен размер окна (строки 23-24)
  10. В основной функции установлен режим фиксированного размера окна (строка 25)
  11. В основной функции установлен цвет кисти по умолчанию (строка 26)
  12. В основной функции установлен цвет пера по умолчанию (строка 27)
  13. В основной функции выполняется цикл рисования (строка 28)
  14. В основной функции выполняется проверка на выход за пределы окна (строка 29)
  15. В основной функции выполняется изменение цвета кисти (строка 30)
  16. В основной функции выполняется рисование окружности (строка 31)
  17. В основной функции выполняется проверка на выход за пределы окна (строка 32)
  18. В основной функции выполняется изменение координат (строка 33)
  19. В основной функции выполняется рисование окружности (строка 34)
  20. В основной функции выполняется проверка на выход за пределы окна (строка 35)

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


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

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

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