|
24 | 24 |
|
25 | 25 | import pygame
|
26 | 26 |
|
27 |
| -from FeedbackBase.MainloopFeedback import MainloopFeedback |
| 27 | +from FeedbackBase.PygameFeedback import PygameFeedback |
28 | 28 |
|
29 | 29 |
|
30 |
| -class TrivialPong(MainloopFeedback): |
| 30 | +class TrivialPong(PygameFeedback): |
31 | 31 |
|
32 | 32 | def on_control_event(self, data):
|
33 |
| - self.val = self._data["data"][-1] |
34 |
| - |
| 33 | + self.val = data["clout"] |
| 34 | + |
35 | 35 | def init(self):
|
36 |
| - self.FPS = 60 |
37 |
| - self.val = 0.0 |
38 |
| - |
39 |
| - def pre_mainloop(self): |
40 |
| - pygame.init() |
41 |
| - self.size = self.width, self.height = 800, 600 |
| 36 | + PygameFeedback.init(self) |
| 37 | + self.caption = "Trivial Pong" |
| 38 | + # set the initial speeds for ball and bar |
| 39 | + self.barspeed = [3, 0] |
42 | 40 | self.speed = [2, 2]
|
43 |
| - black = 0, 0, 0 |
44 |
| - path = os.path.dirname( globals()["__file__"] ) |
45 |
| - self.screen = pygame.display.set_mode(self.size) |
| 41 | + # set initial value for cl output |
| 42 | + self.val = 0.0 |
| 43 | + |
| 44 | + def init_graphics(self): |
| 45 | + # load graphics |
| 46 | + path = os.path.dirname( globals()["__file__"] ) |
46 | 47 | self.ball = pygame.image.load(os.path.join(path, "ball.png"))
|
47 | 48 | self.ballrect = self.ball.get_rect()
|
48 | 49 | self.bar = pygame.image.load(os.path.join(path, "bar.png"))
|
49 | 50 | self.barrect = self.bar.get_rect()
|
50 |
| - self.barspeed = [3, 0] |
51 |
| - self.clock = pygame.time.Clock() |
52 |
| - |
53 |
| - def post_mainloop(self): |
54 |
| - pygame.quit() |
55 |
| - |
56 |
| - def tick(self): |
57 |
| - self.clock.tick(self.FPS) |
58 |
| - pygame.event.pump() |
59 |
| - |
| 51 | + |
60 | 52 | def play_tick(self):
|
61 |
| - w_half = self.screen.get_width() / 2 |
| 53 | + width, height = self.screenSize |
| 54 | + w_half = width / 2. |
| 55 | + # move bar and ball |
62 | 56 | pos = w_half + w_half * self.val
|
63 |
| - self.barrect.center = pos, self.height - 20 |
| 57 | + self.barrect.center = pos, height - 20 |
64 | 58 | self.ballrect = self.ballrect.move(self.speed)
|
65 |
| - if self.ballrect.left < 0 or self.ballrect.right > self.width: |
| 59 | + # collision detection walls |
| 60 | + if self.ballrect.left < 0 or self.ballrect.right > width: |
66 | 61 | self.speed[0] = -self.speed[0]
|
67 |
| - if self.ballrect.top < 0 or self.ballrect.bottom > self.height: |
| 62 | + if self.ballrect.top < 0 or self.ballrect.bottom > height: |
68 | 63 | self.speed[1] = -self.speed[1]
|
69 |
| - if self.barrect.left < 0 or self.barrect.right > self.width: |
| 64 | + if self.barrect.left < 0 or self.barrect.right > width: |
70 | 65 | self.barspeed[0] = -self.barspeed[0]
|
71 |
| - if self.barrect.top < 0 or self.barrect.bottom > self.height: |
| 66 | + if self.barrect.top < 0 or self.barrect.bottom > height: |
72 | 67 | self.barspeed[1] = -self.barspeed[1]
|
| 68 | + # collision detection for bar vs ball |
73 | 69 | if self.barrect.colliderect(self.ballrect):
|
74 | 70 | self.speed[0] = -self.speed[0]
|
75 | 71 | self.speed[1] = -self.speed[1]
|
76 |
| - self.screen.fill( (0,0,0) ) |
| 72 | + # update the screen |
| 73 | + self.screen.fill(self.backgroundColor) |
77 | 74 | self.screen.blit(self.ball, self.ballrect)
|
78 | 75 | self.screen.blit(self.bar, self.barrect)
|
79 | 76 | pygame.display.flip()
|
|
0 commit comments