from turtle import Turtle, Screen from paddle import Paddle from ball import Ball from score import Score import time class GameManager(): BOARD_WIDTH=800 BOARD_HEIGHT=600 def __init__(self): self.screen = Screen() self.screen.setup(width=self.BOARD_WIDTH, height=self.BOARD_HEIGHT) self.screen.bgcolor("black") self.screen.title("PONG") self.screen.tracer(0) self.draw_delimiter() self.screen.update() self.game_on = True self.right_paddle = Paddle(350) self.left_paddle = Paddle(-370) self.right_score = Score(30) self.left_score = Score(-30) self.ball = Ball() def draw_delimiter(self): delimiter = Turtle() max_y = int(self.BOARD_HEIGHT/2) delimiter.color("white") delimiter.shape("square") delimiter.pen(pensize=3) delimiter.hideturtle() delimiter.pu() delimiter.goto(x=0, y=-max_y) for i in range(-max_y, max_y, 20): delimiter.goto(x=0, y=i+10) delimiter.pu() delimiter.goto(x=0, y=i+20) delimiter.pd() def game_round(self): self.control_paddle() self.ball.move() if self.ball.xcor() > 400: self.game_on = False self.left_score.increment() self.left_score.update() if self.ball.xcor() < -400: self.game_on = False self.right_score.increment() self.right_score.update() if self.game_on == False: self.ball.clear() self.ball = Ball() self.right_paddle.reset_position(350) self.left_paddle.reset_position(-370) self.game_on = True if abs(self.ball.ycor()) > 280: self.ball.bounce_wall() if (abs(self.ball.xcor() - self.right_paddle.xcor()) <= 20 and abs(self.ball.ycor() - self.right_paddle.ycor()) < 50) or (abs(self.ball.xcor() - self.left_paddle.xcor()) <= 20 and abs(self.ball.ycor() - self.left_paddle.ycor()) < 50): self.ball.bounce_paddle() self.ball.move_speed = self.ball.move_speed * 0.1 time.sleep(self.ball.move_speed) def control_paddle(self): self.screen.listen() self.screen.onkey(self.right_paddle.up, "Up") self.screen.onkey(self.right_paddle.down, "Down") self.screen.onkey(self.left_paddle.up, "q") self.screen.onkey(self.left_paddle.down, "w") self.screen.update()