|
| 1 | +# ./PongPong/pongpong.py |
| 2 | + |
| 3 | +import pyglet |
| 4 | +from pong import load |
| 5 | + |
| 6 | +# Variables, Considering a vertical oriented window for game |
| 7 | +WIDTH = 600 # Game Window Width |
| 8 | +HEIGHT = 600 # Game Window Height |
| 9 | +BORDER = 10 # Walls Thickness/Border Thickness |
| 10 | +RADIUS = 12 # Ball Radius |
| 11 | +PWIDTH = 120 # Paddle Width |
| 12 | +PHEIGHT = 15 # Paddle Height |
| 13 | +ballspeed = (-2, -2) # Initially ball will be falling with speed (x, y) |
| 14 | +paddleacc = (-5, 5) # Paddle Acceleration on both sides - left: negative acc, right: positive acc, for x-axis |
| 15 | + |
| 16 | + |
| 17 | +class PongPongWindow(pyglet.window.Window): |
| 18 | + def __init__(self, *args, **kwargs): |
| 19 | + super(PongPongWindow, self).__init__(*args, **kwargs) |
| 20 | + |
| 21 | + self.win_size = (WIDTH, HEIGHT) |
| 22 | + self.paddle_pos = (WIDTH/2-PWIDTH/2, 0) |
| 23 | + self.main_batch = pyglet.graphics.Batch() |
| 24 | + self.walls = load.load_rectangles(self.win_size, BORDER, batch=self.main_batch) |
| 25 | + self.balls = load.load_balls(self.win_size, RADIUS, speed=ballspeed, batch=self.main_batch) |
| 26 | + self.paddles = load.load_paddles(self.paddle_pos, PWIDTH, PHEIGHT, acc=paddleacc, batch=self.main_batch) |
| 27 | + |
| 28 | + def on_draw(self): |
| 29 | + self.clear() |
| 30 | + self.main_batch.draw() |
| 31 | + |
| 32 | + |
| 33 | +game_window = PongPongWindow(width=WIDTH, height=HEIGHT, caption='PongPong') |
| 34 | +game_objects = game_window.balls + game_window.paddles |
| 35 | + |
| 36 | +for paddle in game_window.paddles: |
| 37 | + for handler in paddle.event_handlers: |
| 38 | + game_window.push_handlers(handler) |
| 39 | + |
| 40 | + |
| 41 | + |
| 42 | +def update(dt): |
| 43 | + global game_objects, game_window |
| 44 | + |
| 45 | + for obj1 in game_objects: |
| 46 | + for obj2 in game_objects: |
| 47 | + if obj1 is obj2: |
| 48 | + continue |
| 49 | + obj1.update(game_window.win_size, BORDER, obj2, dt) |
| 50 | + |
| 51 | + |
| 52 | +if __name__ == '__main__': |
| 53 | + pyglet.clock.schedule_interval(update, 1/120.0) |
| 54 | + pyglet.app.run() |
0 commit comments