Как сделать, чтобы объект перемещался только при нажатом "пробеле"? Заранее спасибо - 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.

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

  1. Объявлены две переменные типа boolean: go и stop. Переменная go устанавливается в false, а переменная stop - в false.
  2. Определены две процедуры: mykeydown и mykeyup. В процедуре mykeydown устанавливается значение переменной go в true, если нажата клавиша пробел, и в false, если нажата клавиша Q. В процедуре mykeyup, если нажата клавиша пробел и переменная go не равна false, то значение переменной go устанавливается в false.
  3. Объявлены четыре переменные типа integer: X, Y, dX и dY. Значения переменных X и Y устанавливаются равными 10. Значения переменных dX и dY устанавливаются равными 1.
  4. Устанавливаются обработчики событий OnKeyDown и OnKeyUp на соответствующие процедуры mykeydown и mykeyup.
  5. Запускается бесконечный цикл while, который выполняется до тех пор, пока переменная stop не станет равной true.
  6. Внутри цикла while есть еще один цикл while. Он выполняется до тех пор, пока переменная go не станет равной false.
  7. Внутри второго цикла while выполняются следующие действия:
    • Если значение переменной Y равно 100 или 1, то значение переменной dY устанавливается равным -dY.
    • Если значение переменной X равно 260 или 1, то значение переменной dX устанавливается равным -dX.
    • Выполняется рисование желтого эллипса с помощью функций FillEllipse и moveto.
    • Значение переменной X увеличивается на значение переменной dX, а значение переменной Y увеличивается на значение переменной dY.
    • Снова выполняется рисование желтого эллипса.
    • Делается пауза в 10 миллисекунд с помощью функции sleep.
  8. После завершения второго цикла while выполняется выход из первого цикла while.

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


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

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

11   голосов , оценка 4.364 из 5
Похожие ответы