Движение круга по периметру экрана - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д