Как сделать, чтобы объект перемещался только при нажатом "пробеле"? Заранее спасибо - PascalABC.NET
Формулировка задачи:
Как сделать, чтобы объект перемещался только при нажатом "пробеле"? Заранее спасибо.
Решение задачи: «Как сделать, чтобы объект перемещался только при нажатом "пробеле"? Заранее спасибо»
textual
Листинг программы
uses GraphABC; var go: boolean := false; stop: boolean := false; procedure mykeydown(ch: integer); begin go := char(ch) = ' '; stop := UpCase(char(ch)) = 'Q'; end; procedure mykeyup(ch: integer); begin if go and (char(ch) = ' ') then go := false; end; var X, Y, dX, dY: integer; begin OnKeyDown := mykeydown; OnKeyUp := mykeyup; X := 10; Y := 10; dX := 1; dY := 1; while not stop do while go and (X <> 400) do begin if (Y = 100) or (Y = 1) then dY := -dY; if (X = 260) or (X = 1) then dX := -dX; begin brush.Color := clred; FillEllipse(X, Y, X + 10, Y + 10); X := X + dX; Y := Y + dY; brush.Color := clyellow; moveto(X, Y); sleep(10); FillEllipse(X, Y, X + 10, Y + 10); end; end; end.
Объяснение кода листинга программы
- Объявлены две переменные типа boolean: go и stop. Переменная go устанавливается в false, а переменная stop - в false.
- Определены две процедуры: mykeydown и mykeyup. В процедуре mykeydown устанавливается значение переменной go в true, если нажата клавиша пробел, и в false, если нажата клавиша Q. В процедуре mykeyup, если нажата клавиша пробел и переменная go не равна false, то значение переменной go устанавливается в false.
- Объявлены четыре переменные типа integer: X, Y, dX и dY. Значения переменных X и Y устанавливаются равными 10. Значения переменных dX и dY устанавливаются равными 1.
- Устанавливаются обработчики событий OnKeyDown и OnKeyUp на соответствующие процедуры mykeydown и mykeyup.
- Запускается бесконечный цикл while, который выполняется до тех пор, пока переменная stop не станет равной true.
- Внутри цикла while есть еще один цикл while. Он выполняется до тех пор, пока переменная go не станет равной false.
- Внутри второго цикла while выполняются следующие действия:
- Если значение переменной Y равно 100 или 1, то значение переменной dY устанавливается равным -dY.
- Если значение переменной X равно 260 или 1, то значение переменной dX устанавливается равным -dX.
- Выполняется рисование желтого эллипса с помощью функций FillEllipse и moveto.
- Значение переменной X увеличивается на значение переменной dX, а значение переменной Y увеличивается на значение переменной dY.
- Снова выполняется рисование желтого эллипса.
- Делается пауза в 10 миллисекунд с помощью функции sleep.
- После завершения второго цикла while выполняется выход из первого цикла while.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д