import pyglet from pyglet.window import key # Set up constants SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 PADDLE_WIDTH = 10 PADDLE_HEIGHT = 80 BALL_RADIUS = 10 PADDLE_SPEED = 5 BALL_SPEED = 3 class PongGame(pyglet.window.Window): def __init__(self): super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Pong Game") self.player_paddle = pyglet.shapes.Rectangle(PADDLE_WIDTH // 2, SCREEN_HEIGHT // 2 - PADDLE_HEIGHT // 2, PADDLE_WIDTH, PADDLE_HEIGHT, color=(255, 255, 255)) self.opponent_paddle = pyglet.shapes.Rectangle(SCREEN_WIDTH - PADDLE_WIDTH // 2, SCREEN_HEIGHT // 2 - PADDLE_HEIGHT // 2, PADDLE_WIDTH, PADDLE_HEIGHT, color=(255, 255, 255)) self.ball = pyglet.shapes.Circle(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2, BALL_RADIUS, color=(255, 255, 255)) self.player_score = 0 self.opponent_score = 0 self.ball_speed_x = BALL_SPEED self.ball_speed_y = BALL_SPEED self.player_speed = 0 def on_draw(self): self.clear() self.player_paddle.draw() self.opponent_paddle.draw() self.ball.draw() score_text = f"Player: {self.player_score} Opponent: {self.opponent_score}" pyglet.text.Label(score_text, font_size=14, x=SCREEN_WIDTH // 2, y=SCREEN_HEIGHT - 20, anchor_x='center', color=(255, 255, 255, 255)).draw() def on_key_press(self, symbol, modifiers): if symbol == key.UP: self.player_speed = PADDLE_SPEED elif symbol == key.DOWN: self.player_speed = -PADDLE_SPEED def on_key_release(self, symbol, modifiers): if symbol == key.UP or symbol == key.DOWN: self.player_speed = 0 def update(self, dt): self.player_paddle.y += self.player_speed self.opponent_paddle.y = self.ball.y - PADDLE_HEIGHT // 2 if self.player_paddle.y < 0: self.player_paddle.y = 0 elif self.player_paddle.y > SCREEN_HEIGHT - PADDLE_HEIGHT: self.player_paddle.y = SCREEN_HEIGHT - PADDLE_HEIGHT self.ball.x += self.ball_speed_x self.ball.y += self.ball_speed_y if self.ball.y < 0 or self.ball.y > SCREEN_HEIGHT: self.ball_speed_y = -self.ball_speed_y if (self.ball.x < self.player_paddle.x + PADDLE_WIDTH and self.player_paddle.y < self.ball.y < self.player_paddle.y + PADDLE_HEIGHT): self.ball_speed_x = -self.ball_speed_x elif (self.ball.x > self.opponent_paddle.x - PADDLE_WIDTH and self.opponent_paddle.y < self.ball.y < self.opponent_paddle.y + PADDLE_HEIGHT): self.ball_speed_x = -self.ball_speed_x if self.ball.x < 0: self.opponent_score += 1 self.ball_restart() elif self.ball.x > SCREEN_WIDTH: self.player_score += 1 self.ball_restart() def ball_restart(self): self.ball.x = SCREEN_WIDTH // 2 self.ball.y = SCREEN_HEIGHT // 2 self.ball_speed_x = -self.ball_speed_x self.ball_speed_y = -self.ball_speed_y if __name__ == "__main__": game = PongGame() pyglet.clock.schedule_interval(game.update, 1/120.0) pyglet.app.run()