Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. from __future__ import division
  2. from sense_hat import SenseHat
  3. import time
  4.  
  5. sense = SenseHat()
  6.  
  7. running = True
  8. angle_length = 26
  9.  
  10. def min(a,b):
  11. if a < b:
  12. return a
  13. return b
  14.  
  15. class Paddle():
  16. def __init__(self):
  17. self.angle = 0.0
  18.  
  19. self.paddle_pos_middle = [0,0]
  20. self.paddle_pos_left = [0,0]
  21. self.paddle_pos_right = [0,0]
  22.  
  23. def get_pos(self):
  24. return (
  25. self.paddle_pos_left,
  26. self.paddle_pos_middle,
  27. self.paddle_pos_right
  28. )
  29.  
  30. def update(self, orientation):
  31. angle = orientation
  32.  
  33. if angle < 26:
  34. angle = 0.0 + (26-angle)
  35. elif (360 - angle_length) < angle < 360:
  36. angle = 26.0 + (360 - angle)
  37. else:
  38. # if min(360 - angle, 0) == angle:
  39. if min(angle, 180) == angle:
  40. angle = 0.0
  41. else:
  42. angle = 52.0
  43.  
  44. angle = (angle / 52.0) * 7
  45. # for some reason, I have the inverse behaviour
  46. angle = int(7 - angle)
  47.  
  48. self.paddle_pos_middle = [0, angle]
  49. if (angle - 1) < 0:
  50. self.paddle_pos_left = [1, 0]
  51. self.paddle_pos_right = [0, angle + 1]
  52. elif (angle + 1) > 7:
  53. self.paddle_pos_left = [0, angle - 1]
  54. self.paddle_pos_right = [1, 7]
  55. else:
  56. self.paddle_pos_left = [0, angle - 1]
  57. self.paddle_pos_right = [0, angle + 1]
  58.  
  59. def render(self):
  60. sense.set_pixel(self.paddle_pos_left[0], self.paddle_pos_left[1], 255, 0, 0)
  61. sense.set_pixel(self.paddle_pos_middle[0], self.paddle_pos_middle[1], 255, 0, 0)
  62. sense.set_pixel(self.paddle_pos_right[0], self.paddle_pos_right[1], 255, 0, 0)
  63.  
  64. X = 0
  65. Y = 1
  66.  
  67. class Ball():
  68. def __init__(self):
  69. self.pos = [6, 3]
  70. self.direction = -1
  71. self.angle = 0 # -1, 0, 1
  72. pass
  73.  
  74. def update(self, paddle):
  75. collide = False
  76.  
  77. if self.pos[X] == 7:
  78. collide = True
  79. elif self.pos[X] == 0:
  80. collide = True
  81.  
  82. if self.pos[Y] == 0:
  83. collide = True
  84. self.angle = 1
  85. if self.pos[Y] == 7:
  86. collide = True
  87. self.angle = -1
  88.  
  89. if not collide:
  90. paddle_i = 0
  91. for pos in paddle.get_pos():
  92. if pos[X] == self.pos[X]-1 and pos[Y] == self.pos[Y]:
  93. collide = True
  94. self.angle = paddle_i
  95. break
  96.  
  97. paddle_i += 1
  98.  
  99. if collide:
  100. self.direction *= -1
  101. self.angle *= self.direction
  102.  
  103. self.pos[X] += self.direction * 1
  104. self.pos[Y] += self.angle * 1
  105.  
  106. def render(self):
  107. sense.set_pixel(self.pos[0], self.pos[1], 0, 0, 255)
  108.  
  109.  
  110. paddle = Paddle()
  111. ball = Ball()
  112.  
  113. while running:
  114. time.sleep(0.05)
  115.  
  116. roll = sense.get_orientation_degrees()['roll']
  117. paddle.update(roll)
  118. ball.update(paddle)
  119.  
  120. sense.clear()
  121. paddle.render()
  122. ball.render()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement