Движение точки по окружности. - Free Pascal

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

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

Изобразить на экране точку, движущуюся по окружности с постоянной угловой скоростью. Составить программу для управления скорости движения точки по окружности. Управление производится клавишами "<" (скорость несколько увеличивается) ">" (скорость несколько уменьшается) Вместо точки можно использовать небольшой круг, прямоугольник или изображение стрелы

Решение задачи: «Движение точки по окружности.»

textual
Листинг программы
  1. uses wincrt,graph;
  2. var x0,y0,x,y,r,z:integer;
  3.     u:real;
  4.     c:char;
  5. begin
  6. x:=detect;
  7. initgraph(x,y,'');
  8. x0:=getmaxX div 2;
  9. y0:=getmaxY div 2;
  10. r:=y0 div 2;
  11. u:=pi/2;
  12. z:=100;
  13. repeat
  14. setcolor(9);
  15. circle(x0,y0,r);
  16. x:=x0+round(r*cos(u));
  17. y:=y0-round(r*sin(u));
  18. setcolor(12);
  19. setfillstyle(1,12);
  20. fillellipse(x,y,2,2);
  21. outtextXY(x0-50,10,'Esc - exit');
  22. delay(z);
  23. setcolor(0);
  24. circle(x0,y0,r);
  25. setfillstyle(1,0);
  26. fillellipse(x,y,2,2);
  27. u:=u+0.1;
  28. if keypressed then
  29.  begin
  30.   c:=readkey;
  31.   if c=#0 then c:=readkey;
  32.   case c of
  33.  '<':if z<200 then z:=z+10;
  34.  '>':if z>20 then z:=z-10;
  35.   #27:exit;
  36.   end;
  37.  end
  38. until c=#27;
  39. readln;
  40. end.

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

  1. uses wincrt,graph; - подключаем модули для работы с графикой и консолью Windows
  2. var x0,y0,x,y,r,z:integer; - объявляем целочисленные переменные для координат и радиуса окружности
  3. u:real; - объявляем переменную с плавающей точкой для угла
  4. c:char; - объявляем переменную для хранения символа, в данном случае для обработки нажатий клавиш
  5. begin - начало блока кода
  6. x:=detect; - получаем ширину экрана
  7. initgraph(x,y,''); - инициализируем графический режим
  8. x0:=getmaxX div 2; - получаем координату X центра окружности
  9. y0:=getmaxY div 2; - получаем координату Y центра окружности
  10. r:=y0 div 2; - задаем радиус окружности
  11. u:=pi/2; - задаем начальный угол
  12. z:=100; - задаем скорость движения точки по окружности
  13. repeat - начало цикла
  14. setcolor(9); - задаем цвет линии
  15. circle(x0,y0,r); - рисуем окружность с заданным центром и радиусом
  16. *x:=x0+round(rcos(u));** - вычисляем новую координату X
  17. *y:=y0-round(rsin(u));** - вычисляем новую координату Y
  18. setcolor(12); - меняем цвет заливки на светло-зеленый
  19. setfillstyle(1,12); - устанавливаем стиль заливки в виде эллипса
  20. fillellipse(x,y,2,2); - рисуем эллипс с заданными координатами и размерами
  21. outtextXY(x0-50,10,'Esc - exit'); - выводим текст подсказки в указанные координаты
  22. delay(z); - задержка в 100 миллисекунд
  23. setcolor(0); - сброс цвета заливки
  24. circle(x0,y0,r); - перерисовываем окружность с текущими координатами
  25. setfillstyle(1,0); - сброс стиля заливки
  26. fillellipse(x,y,2,2); - перерисовываем эллипс с текущими координатами и размерами
  27. u:=u+0.1; - увеличиваем угол на 0.1 радиана
  28. if keypressed then - если нажата клавиша
  29. begin - начало блока обработки нажатий клавиш
  30. c:=readkey; - получаем символ нажатой клавиши
  31. if c=#0 then c:=readkey; - считывание нажатия клавиши дважды, чтобы корректно обработать нажатие клавиши Esc
  32. case c of - блок обработки различных нажатых клавиш
  33. '<':if z<200 then z:=z+10; - если нажата клавиша <, то увеличиваем скорость движения
  34. '>':if z>20 then z:=z-10; - если нажата клавиша >, то уменьшаем скорость движения
  35. #27:exit; - если нажата клавиша Esc, то выходим из программы
  36. end; - конец блока обработки нажатий клавиш
  37. end; - конец цикла
  38. readln; - считывание символа новой строки, чтобы программа дождалась ввода пользователя перед завершением
  39. end. - конец программы

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


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

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

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы