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