Guest User

Untitled

a guest
Aug 31st, 2019
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. program physic;
  2.  
  3. uses WPFObjects;
  4.  
  5. const
  6. height = 500;
  7.  
  8. var
  9. //Гарантируется что истинным может быть лишь одна из двух переменных
  10. LeftButton: boolean = false;
  11. RightButton: boolean = false;
  12. UpButton: boolean = false;
  13. DownButton: boolean = false;
  14.  
  15. elem: RectangleWPF; //Объект
  16. y_boost := 0.5;
  17.  
  18. procedure move();
  19. begin
  20.  
  21. //Движение по горизонтали с помощью клавиш лево/право
  22. if LeftButton then
  23. elem.dx := -5;
  24. if RightButton then
  25. elem.dx := 5;
  26. if not LeftButton and not RightButton then
  27. elem.dx := 0;
  28.  
  29. //Прыжок с помощью клавиши вверх
  30. if UpButton then
  31. begin
  32. elem.dy := -15;
  33. UpButton := false;
  34. end;
  35.  
  36. //Замедляющее ускорение направленное вниз
  37. if (elem.Bottom < height) and (elem.Dy < 8) then
  38. //Если тело в "воздухе" то прибавляем к его скорости ускорение
  39. //При этом максимальная вертикальная скорость не может быть больше 8
  40. //Так игра становится более плавной, но впринципе можно убрать
  41. elem.Dy += y_boost;
  42.  
  43. //Предохранитель не позволяющий объекту оказаться внутри другого объекта
  44. //Должен идти в конце, чтобы скорость тела не изменилась
  45. if (elem.Bottom + elem.Dy) >= height then
  46. begin
  47. elem.Bottom := height;
  48. elem.Dy := 0;
  49. end;
  50.  
  51. //Изменяем координаты объекта согласно его скорости
  52. elem.Move();
  53.  
  54. end;
  55.  
  56. procedure ButtonClickDown(k: key);
  57. begin
  58. case k.ToString of
  59. 'Left':
  60. begin
  61. LeftButton := true;
  62. RightButton := false;
  63. end;
  64. 'Right':
  65. begin
  66. LeftButton := false;
  67. RightButton := true;
  68. end;
  69. 'Up':
  70. begin
  71. UpButton := true;
  72. DownButton := false;
  73. end;
  74. 'Down':
  75. begin
  76. UpButton := false;
  77. DownButton := true;
  78. end;
  79. end;
  80. end;
  81.  
  82. procedure ButtonClickUp(k: key);
  83. begin
  84. case k.ToString of
  85. 'Left': LeftButton := false;
  86. 'Right': RightButton := false;
  87. 'Up': UpButton := false;
  88. 'Down': DownButton := false;
  89. end;
  90. end;
  91.  
  92. begin
  93. OnKeyDown := ButtonClickDown;
  94. OnKeyUp := ButtonClickUp;
  95.  
  96. elem := new RectangleWPF(pnt(10, 10), 50, 50, rgb(0, 128, 0)); //Создаем прямоугольник
  97. elem.Direction := (0, 0); //Инициализуерм его скорость
  98.  
  99. BeginFrameBasedAnimation(move, 80);
  100. end.
Advertisement
Add Comment
Please, Sign In to add comment