Остановка движения объекта - PascalABC.NET
Формулировка задачи:
Как сделать, чтобы цикл заканчивался при нажатии клавиши, например Q, а не при достижении X ?
Решение задачи: «Остановка движения объекта»
textual
Листинг программы
uses GraphABC; var stop: boolean := false; procedure mykeypress(ch: char); begin stop := UpCase(ch) = 'Q'; end; var X, Y: integer; begin OnKeyPress := mykeypress; X := 10; Y := 10; while not stop do begin brush.Color := clRed; FillEllipse(X, Y, X + 10, Y + 10); X := X + 1; Y := Y + 1; brush.Color := clyellow; moveto(X, Y); sleep(100); FillEllipse(X, Y, X + 10, Y + 10); end; end.
Объяснение кода листинга программы
- Объявлены переменные: stop (булевое значение), X, Y (целые значения).
- Определена процедура mykeypress, которая принимает символ и проверяет, равен ли он 'Q' (буква 'Q' в верхнем регистре). Если это так, то булево значение переменной stop устанавливается в true.
- Переменная OnKeyPress устанавливается в процедуру mykeypress.
- Значения X и Y устанавливаются равными 10.
- Запускается цикл while, который продолжается до тех пор, пока булево значение переменной stop не станет равным true.
- Внутри цикла выполняются следующие действия:
- Устанавливается цвет кисти в красный (clRed).
- Заполняется эллипс с координатами X, Y, X+10, Y+10.
- Значение X увеличивается на 1.
- Значение Y увеличивается на 1.
- Устанавливается цвет кисти в желтый (clyellow).
- Перемещается точка X, Y.
- Запускается задержка в 100 миллисекунд (sleep(100)).
- Заполняется эллипс с координатами X, Y, X+10, Y+10.
- После завершения цикла while программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д