85 lines
2.8 KiB
Python
85 lines
2.8 KiB
Python
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()
|
|
|