Создание персонажа и его движение с помощью стрелок - PascalABC.NET
Формулировка задачи:
У меня есть кружочек
И да он влюблён (:
Вопрос: Как сделать так,что-бы при нажатии на нужные кнопки,он менял траекторию в пикселях.
Например: нажали стрелку вверх и кружок пошёл на 10 пикселей в верх .
Листинг программы
- uses ABCObjects,GraphABC;
- var
- r: RectangleABC;
- c: CircleABC;
- begin
- c := new CircleABC(324,230,200,clMoneyGreen);
- c.Text := 'Can you love me?'
- end.
другими словами было
Листинг программы
- CircleABC(324,230,200,clMoneyGreen);
а стало
Листинг программы
- CircleABC(324,220,200,clMoneyGreen);
Решение задачи: «Создание персонажа и его движение с помощью стрелок»
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) запускается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д