Создание персонажа и его движение с помощью стрелок - PascalABC.NET
Формулировка задачи:
У меня есть кружочек
И да он влюблён (:
Вопрос: Как сделать так,что-бы при нажатии на нужные кнопки,он менял траекторию в пикселях.
Например: нажали стрелку вверх и кружок пошёл на 10 пикселей в верх .
другими словами было
а стало
Решение задачи: «Создание персонажа и его движение с помощью стрелок»
textual
Листинг программы
uses ABCObjects,GraphABC; var r: RectangleABC; c: CircleABC; procedure ThreadProc; begin while true do begin c.Move; Sleep(15); end; end; procedure KeyDown(key: integer); begin case key of VK_Up: c.dy := -10; VK_Down: c.dy := 10; VK_Left: c.dx := -10; VK_Right: c.dx := 10; end; end; procedure KeyUp(Key: integer); begin case key of VK_Up, VK_Down: c.dy := 0; VK_Left, VK_Right: c.dx := 0; end; end; begin c := new CircleABC(324,230,200,clMoneyGreen); c.Text := 'Can you love me?'; //Присваиваем обработчикам события OnKeyDown := KeyDown; //Когда нажали клавишу OnKeyUp := KeyUp; //Когда отпустили клавишу //По сути - таймер Var t := new System.Threading.Thread(ThreadProc); t.Start; end.
Объяснение кода листинга программы
- Объявлены переменные r и c типа RectangleABC и CircleABC соответственно.
- Создана процедура ThreadProc, которая будет выполнять цикл движения персонажа.
- В цикле while true do выполняется движение персонажа (переменная c) с помощью метода Move и задержка в 15 миллисекунд с помощью функции Sleep.
- Создана процедура KeyDown, которая изменяет скорость движения персонажа по оси X и Y в зависимости от нажатой клавиши.
- Создана процедура KeyUp, которая изменяет скорость движения персонажа по оси X и Y в зависимости от отпущенной клавиши.
- Создана новая переменная c типа CircleABC с заданными параметрами (324,230,200,clMoneyGreen).
- Текст c устанавливается на 'Can you love me?'.
- Обработчики событий OnKeyDown и OnKeyUp присваиваются соответственно процедурам KeyDown и KeyUp.
- Создается новый поток (t) для выполнения процедуры ThreadProc.
- Поток (t) запускается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д