Движение круга по периметру экрана - PascalABC.NET
Формулировка задачи:
Нужно сделать так, чтобы круг двигался по периметру всего экрана по часовой стрелке пока не будет нажата ЛКМ.
Решение задачи: «Движение круга по периметру экрана»
textual
Листинг программы
uses graphABC; const w=400;//размеры окна r=20;//радиус круга z=1;//задержка d=1;//шаг смещения шара var f:boolean;//переменная для останова программы procedure MouseDown(x,y,mousebutton: integer); begin if mousebutton=1 then f:=false;//если ЛКМ остановка end; var x,y:integer; begin setwindowsize(w,w); centerwindow; f:=true; onmousedown:=MouseDown; x:=r; y:=r; lockdrawing; while f do begin clearwindow; setbrushcolor(clRed); circle(x,y,10); sleep(1); if (x<w-r)and(y<=r) then x:=x+1 else if (y<w-r)and(x>=w-r) then y:=y+1 else if(x>r)and(y>=w-r) then x:=x-d else if (y>r)and(x<=w-r) then y:=y-d; redraw; end; end.
Объяснение кода листинга программы
- Объявлены константы: wi — размер окна, r — радиус круга, z — задержка, d — шаг смещения круга.
- Объявлена переменная: f — для контроля цикла.
- Определён обработчик события мыши: MouseDown — чтобы остановить движение круга.
- Инициализированы переменные: x, y — начальные координаты круга.
- Задано основное условие для цикла: while f do — пока не нажата ЛКМ.
- Очищено окно и установлен цвет кисти.
- Нарисован круг на текущих координатах.
- Если нажата ЛКМ, то программа останавливается: if mousebutton=1 then f:=false;
- Задержка в 1 миллисекунду.
- Условие для изменения координат: if (x<w-r)and(y<=r) then x:=x+1
- Условие для изменения координат: else if (y<w-r)and(x>=w-r) then y:=y+1
- Условие для изменения координат: else if(x>r)and(y>=w-r) then x:=x-d
- Условие для изменения координат: else if (y>r)and(x<=w-r) then y:=y-d;
- Окно обновляется после изменения координат.
- Цикл повторяется.
- Код для остановки программы: onmousedown:=MouseDown;
- Код для установки размеров окна и его централизации: setwindowsize(w,w); centerwindow;
- Инициализация переменной f для контроля цикла: f:=true;
- Объявление переменных x и y: var x,y:integer;
- Начало выполнения программы: begin
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д