Advertisement
Lonely_Wanderer

Альтернативное решение задачи 4

Sep 26th, 2023 (edited)
964
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.69 KB | None | 0 0
  1. from m5stack import *
  2. from m5ui import *
  3. from uiflow import *
  4.  
  5. setScreenColor(0x222222)
  6.  
  7. rect = M5Rect(155, 115, 10, 10, 0x0000FF, 0x0000FF)
  8. joystick = unit.get(unit.JOYSTICK, unit.PORTA)
  9.  
  10. x,y = 155,115
  11.  
  12. while True:
  13.   # Смещаем координаты джойстика на 120 влево и 120 вниз, чтобы состояние покоя
  14.   # (когда стик ровно в центре) соответствовало коорднатам [0;0]
  15.   jx = joystick.X - 120
  16.   jy = joystick.Y - 120
  17.   # при отклонении стика более, чем на 40 пунктов,
  18.   # относительно центра. Прибаляется к координате прошлого положения
  19.   # результат целочисленного деления на 30, нормализировнной координаты JX,
  20.   # что позволяет нам при бОльшем отклонении от центра,
  21.   #увеличивать скорость движения квадрата
  22.   if -40 < jx < 40:
  23.     x+= jx // 30
  24.   # те же действия, только для координаты Y. Так как Y в верхнем положении равен
  25.   # -120, (то есть изменяется сверху вниз), ставим перед знаком равно минус,
  26.   # чтобы инвертировать показания, для правильности перемещений
  27.   if -40 < jy < 40:
  28.     y-= jy // 30
  29.   # при нажатии на кнопку джойстика, помещаем квадрат обратно в центр экрана.
  30.   if joystick.Press: x,y = 155,115
  31.   rect.setPosition(x,y)
  32.   wait(0.1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement