Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import division
- from sense_hat import SenseHat
- import time
- sense = SenseHat()
- running = True
- angle_length = 26
- def min(a,b):
- if a < b:
- return a
- return b
- class Paddle():
- def __init__(self):
- self.angle = 0.0
- self.paddle_pos_middle = [0,0]
- self.paddle_pos_left = [0,0]
- self.paddle_pos_right = [0,0]
- def get_pos(self):
- return (
- self.paddle_pos_left,
- self.paddle_pos_middle,
- self.paddle_pos_right
- )
- def update(self, orientation):
- angle = orientation
- if angle < 26:
- angle = 0.0 + (26-angle)
- elif (360 - angle_length) < angle < 360:
- angle = 26.0 + (360 - angle)
- else:
- # if min(360 - angle, 0) == angle:
- if min(angle, 180) == angle:
- angle = 0.0
- else:
- angle = 52.0
- angle = (angle / 52.0) * 7
- # for some reason, I have the inverse behaviour
- angle = int(7 - angle)
- self.paddle_pos_middle = [0, angle]
- if (angle - 1) < 0:
- self.paddle_pos_left = [1, 0]
- self.paddle_pos_right = [0, angle + 1]
- elif (angle + 1) > 7:
- self.paddle_pos_left = [0, angle - 1]
- self.paddle_pos_right = [1, 7]
- else:
- self.paddle_pos_left = [0, angle - 1]
- self.paddle_pos_right = [0, angle + 1]
- def render(self):
- sense.set_pixel(self.paddle_pos_left[0], self.paddle_pos_left[1], 255, 0, 0)
- sense.set_pixel(self.paddle_pos_middle[0], self.paddle_pos_middle[1], 255, 0, 0)
- sense.set_pixel(self.paddle_pos_right[0], self.paddle_pos_right[1], 255, 0, 0)
- X = 0
- Y = 1
- class Ball():
- def __init__(self):
- self.pos = [6, 3]
- self.direction = -1
- self.angle = 0 # -1, 0, 1
- pass
- def update(self, paddle):
- collide = False
- if self.pos[X] == 7:
- collide = True
- elif self.pos[X] == 0:
- collide = True
- if self.pos[Y] == 0:
- collide = True
- self.angle = 1
- if self.pos[Y] == 7:
- collide = True
- self.angle = -1
- if not collide:
- paddle_i = 0
- for pos in paddle.get_pos():
- if pos[X] == self.pos[X]-1 and pos[Y] == self.pos[Y]:
- collide = True
- self.angle = paddle_i
- break
- paddle_i += 1
- if collide:
- self.direction *= -1
- self.angle *= self.direction
- self.pos[X] += self.direction * 1
- self.pos[Y] += self.angle * 1
- def render(self):
- sense.set_pixel(self.pos[0], self.pos[1], 0, 0, 255)
- paddle = Paddle()
- ball = Ball()
- while running:
- time.sleep(0.05)
- roll = sense.get_orientation_degrees()['roll']
- paddle.update(roll)
- ball.update(paddle)
- sense.clear()
- paddle.render()
- ball.render()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement