Модуль Graph. Изобразить две концентрических окружности и движущиеся по ним две точки в противоположных направлениях - Free Pascal

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

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

Изобразить две концентрических окружности и движущиеся по них две точки в противоположных направлениях

Решение задачи: «Модуль Graph. Изобразить две концентрических окружности и движущиеся по ним две точки в противоположных направлениях»

textual
Листинг программы
uses wincrt,graph;
var xc,yc,r1,r2,s1,s2:integer;
    p1,p2:pointer;
    u:real;
begin
initgraph(xc,yc,'');
xc:=getmaxX div 2;
yc:=getmaxY div 2;
r1:=100;
r2:=80;
outtextXY(xc-50,30,'Exit - any key');
setcolor(14);
circle(xc,yc,r1);
setcolor(10);
circle(xc,yc,r2);
{создадим 1 шарик}
setcolor(9);
circle(2,2,2);
setfillstyle(1,9);
floodfill(1,1,9);
s1:=imagesize(0,0,4,4);
getmem(p1,s1);{выделим память по него}
getimage(0,0,4,4,p1^);{запомним эту область экрана}
putimage(0,0,p1^,xorput);{сотрем изображение}
{также 2 шарик}
setcolor(12);
circle(2,2,2);
setfillstyle(1,12);
floodfill(1,1,12);
s2:=imagesize(0,0,4,4);
getmem(p2,s2);
getimage(0,0,4,4,p2^);
{стираем 2}
putimage(0,0,p2^,xorput);
{основной цикл вращения шариков}
u:=0; {начальный угол=0}
repeat
{рисуем шарики}
{1 против часовой стрелки}
putimage(xc+round(r1*cos(u)),yc-round(r1*sin(u)),p1^,xorput);
{ 2 по часовой стрелке}
putimage(xc+round(r2*cos(u)),yc+round(r2*sin(u)),p2^,xorput);
delay(100);{задержка}
{стираем}
putimage(xc+round(r1*cos(u)),yc-round(r1*sin(u)),p1^,xorput);
putimage(xc+round(r2*cos(u)),yc+round(r2*sin(u)),p2^,xorput);
u:=u+0.1;{поворачиваем на 0.1 радиана и рисуем в новом месте}
if u>2*pi then u:=0;{чтобы не накапливать, на каждом обороте обнуляем}
until keypressed;{нажатие клавиши - выход}
end.

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

  1. Объявлены переменные: xc, yc, r1, r2, s1, s2, p1, p2, u (строки с 1 по 8)
  2. Инициализируется графический модуль (строка 9)
  3. Задаются координаты центра окружностей и их радиусы (строки с 10 по 12)
  4. Выводятся две окружности (строки с 13 по 16)
  5. Создаются два шарика (строки с 17 по 20)
  6. Задается начальный угол (строка 21)
  7. Запускается основной цикл вращения шариков (строка 22)
  8. В цикле рисуются шарики (строки с 23 по 26)
  9. Добавлена задержка (строка 27)
  10. Стираются предыдущие изображения шариков (строки с 28 по 30)
  11. Угол увеличивается на 0.1 радиана (строка 31)
  12. Если угол превысил 2π, то он сбрасывается в 0 (строка 32)
  13. Цикл продолжается, пока не будет нажата клавиша (строка 33)

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


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

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

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