Обработка одновременного нажатия двух клавиш - PascalABC.NET
Формулировка задачи:
Доброго времени суток! Я пишу маленькую игру на PascalABC.Net. Мне нужно обрабатывать нажатие двух клавиш одновременно (Например, вверх+вправо). Как это реализовать? Не предлагать переходить на Pascal или Delphi (на этих двух такое делать могу). Меня интересует сам процесс на PascalABC.Net.
Решение задачи: «Обработка одновременного нажатия двух клавиш»
textual
Листинг программы
uses graphabc; var x, y: integer; f: boolean; isUp := false; isRight := false; procedure KeyPress(ch: char); begin if ch = #27 then f := false; end; procedure KeyDown(key: integer); begin case key of VK_Up: isUp := true; VK_Right: isRight := true; end; end; procedure KeyUp(key: integer); begin case key of VK_Up: isUp := false; VK_Right: isRight := false; end; end; begin x := 200; y := 150; f := true; onkeypress := KeyPress; onkeydown := KeyDown; OnKeyUp := KeyUp; lockdrawing; repeat Window.Clear; rectangle(x - 50, y - 50, x + 50, y + 50); sleep(75); if isUp then y := y - 5; if isRight then x := x + 5; redraw; until not f; end.
Объяснение кода листинга программы
- Объявлены переменные: x, y, f, isUp, isRight.
- Переменная f инициализируется значением true.
- Установлены обработчики событий: KeyPress, KeyDown, KeyUp.
- Задана начальная позиция (x=200, y=150).
- Заблокировано рисование.
- В цикле выполняется рисование (очистка окна и отрисовка прямоугольника).
- Если нажата клавиша
Вверх
, то значение переменной y уменьшается на 5. - Если нажата клавиша
Вправо
, то значение переменной x увеличивается на 5. - Если переменная f равна true, то выполняется проверка на одновременное нажатие клавиш
Вверх
иВправо
. - Если условие выполняется, то выполняется перерисовка.
- Цикл выполняется до тех пор, пока переменная f не станет равной false.
- Разблокировано рисование.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д