Создание персонажа и его движение с помощью стрелок - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

У меня есть кружочек
Листинг программы
  1. uses ABCObjects,GraphABC;
  2. var
  3. r: RectangleABC;
  4. c: CircleABC;
  5. begin
  6. c := new CircleABC(324,230,200,clMoneyGreen);
  7. c.Text := 'Can you love me?'
  8. end.
И да он влюблён (: Вопрос: Как сделать так,что-бы при нажатии на нужные кнопки,он менял траекторию в пикселях. Например: нажали стрелку вверх и кружок пошёл на 10 пикселей в верх .

другими словами было

Листинг программы
  1. CircleABC(324,230,200,clMoneyGreen);

а стало

Листинг программы
  1. CircleABC(324,220,200,clMoneyGreen);

Решение задачи: «Создание персонажа и его движение с помощью стрелок»

textual
Листинг программы
  1. uses ABCObjects,GraphABC;
  2. var
  3.   r: RectangleABC;
  4.   c: CircleABC;
  5.  
  6. procedure ThreadProc;
  7. begin
  8.   while true do
  9.   begin
  10.     c.Move;
  11.     Sleep(15);
  12.   end;
  13. end;
  14.  
  15. procedure KeyDown(key: integer);
  16. begin
  17.   case key of
  18.     VK_Up: c.dy := -10;
  19.     VK_Down: c.dy := 10;
  20.     VK_Left: c.dx := -10;
  21.     VK_Right: c.dx := 10;
  22.   end;
  23. end;
  24.  
  25. procedure KeyUp(Key: integer);
  26. begin
  27.   case key of
  28.     VK_Up, VK_Down: c.dy := 0;
  29.     VK_Left, VK_Right: c.dx := 0;
  30.   end;
  31. end;
  32.  
  33. begin
  34.   c := new CircleABC(324,230,200,clMoneyGreen);
  35.   c.Text := 'Can you love me?';
  36.  
  37.   //Присваиваем обработчикам события
  38.   OnKeyDown := KeyDown;  //Когда нажали клавишу
  39.   OnKeyUp := KeyUp;  //Когда отпустили клавишу  
  40.  
  41.   //По сути - таймер
  42.   Var t := new System.Threading.Thread(ThreadProc);
  43.   t.Start;
  44. end.

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

  1. Объявлены переменные r и c типа RectangleABC и CircleABC соответственно.
  2. Создана процедура ThreadProc, которая будет выполнять цикл движения персонажа.
  3. В цикле while true do выполняется движение персонажа (переменная c) с помощью метода Move и задержка в 15 миллисекунд с помощью функции Sleep.
  4. Создана процедура KeyDown, которая изменяет скорость движения персонажа по оси X и Y в зависимости от нажатой клавиши.
  5. Создана процедура KeyUp, которая изменяет скорость движения персонажа по оси X и Y в зависимости от отпущенной клавиши.
  6. Создана новая переменная c типа CircleABC с заданными параметрами (324,230,200,clMoneyGreen).
  7. Текст c устанавливается на 'Can you love me?'.
  8. Обработчики событий OnKeyDown и OnKeyUp присваиваются соответственно процедурам KeyDown и KeyUp.
  9. Создается новый поток (t) для выполнения процедуры ThreadProc.
  10. Поток (t) запускается.

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


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

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

5   голосов , оценка 4.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы