day 22 (actually, there's no 21) - finished Pong

This commit is contained in:
Tanguy Deleplanque
2025-07-16 12:47:31 +02:00
parent 670508261b
commit 697d53f836
5 changed files with 52 additions and 9 deletions

View File

@ -6,10 +6,11 @@ class Ball(Turtle):
super().__init__() super().__init__()
self.shape("circle") self.shape("circle")
self.color("white") self.color("white")
self.speed("fastest")
self.pu() self.pu()
self.move_speed = 0.1
self.angle = random.randint(0,45) self.angle = random.randint(0,45)
self.angle = 50
self.setheading(self.angle) self.setheading(self.angle)
print(self.angle) print(self.angle)
@ -22,6 +23,6 @@ class Ball(Turtle):
self.setheading(self.angle) self.setheading(self.angle)
def bounce_paddle(self): def bounce_paddle(self):
self.angle = -self.angle self.angle = 180 - self.angle
self.setheading(self.angle) self.setheading(self.angle)

View File

@ -1,6 +1,8 @@
from turtle import Turtle, Screen from turtle import Turtle, Screen
from paddle import Paddle from paddle import Paddle
from ball import Ball from ball import Ball
from score import Score
import time
class GameManager(): class GameManager():
BOARD_WIDTH=800 BOARD_WIDTH=800
@ -21,6 +23,9 @@ class GameManager():
self.right_paddle = Paddle(350) self.right_paddle = Paddle(350)
self.left_paddle = Paddle(-370) self.left_paddle = Paddle(-370)
self.right_score = Score(30)
self.left_score = Score(-30)
self.ball = Ball() self.ball = Ball()
def draw_delimiter(self): def draw_delimiter(self):
@ -44,13 +49,31 @@ class GameManager():
self.control_paddle() self.control_paddle()
self.ball.move() self.ball.move()
if abs(self.ball.xcor()) >= 400: if self.ball.xcor() > 400:
self.game_on = False 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: if abs(self.ball.ycor()) > 280:
self.ball.bounce_wall() self.ball.bounce_wall()
print(self.ball.ycor()) 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): def control_paddle(self):
self.screen.listen() self.screen.listen()

View File

@ -1,9 +1,7 @@
from game import GameManager from game import GameManager
from paddle import Paddle from paddle import Paddle
import time
game = GameManager() game = GameManager()
while game.game_on: while game.game_on == True:
game.game_round() game.game_round()
time.sleep(0.1)
game.screen.exitonclick() game.screen.exitonclick()

View File

@ -10,6 +10,9 @@ class Paddle(Turtle):
self.pu() self.pu()
self.teleport(x=x_pos, y=0) self.teleport(x=x_pos, y=0)
def reset_position(self, x_pos):
self.teleport(x=x_pos, y=0)
def up(self): def up(self):
self.goto(x=self.xcor(), y=self.ycor()+20) self.goto(x=self.xcor(), y=self.ycor()+20)

18
022/score.py Normal file
View File

@ -0,0 +1,18 @@
from turtle import Turtle
class Score(Turtle):
def __init__(self, x_pos):
super().__init__()
self.score = 0
self.color("white")
self.hideturtle()
self.pu()
self.goto(x=x_pos, y=270)
self.write(self.score, move=False, align='center', font=('Arial', 24, 'normal'))
def increment(self):
self.score += 1
def update(self):
self.clear()
self.write(self.score, move=False, align='center', font=('Arial', 24, 'normal'))