From 92cdd4cd602871cd399052c982594b5da91bef26 Mon Sep 17 00:00:00 2001 From: hassan Date: Fri, 18 Jul 2025 12:39:36 -0700 Subject: [PATCH] Add Arcade Pong Game using Python --- Pong Arcade Game/Pong Game.py | 40 ++++++++++++++++++++++++++++++++++ Pong Arcade Game/ball.py | 26 ++++++++++++++++++++++ Pong Arcade Game/paddle.py | 16 ++++++++++++++ Pong Arcade Game/scoreboard.py | 23 +++++++++++++++++++ 4 files changed, 105 insertions(+) create mode 100644 Pong Arcade Game/Pong Game.py create mode 100644 Pong Arcade Game/ball.py create mode 100644 Pong Arcade Game/paddle.py create mode 100644 Pong Arcade Game/scoreboard.py diff --git a/Pong Arcade Game/Pong Game.py b/Pong Arcade Game/Pong Game.py new file mode 100644 index 0000000..35a756a --- /dev/null +++ b/Pong Arcade Game/Pong Game.py @@ -0,0 +1,40 @@ +from turtle import Screen,Turtle +from paddle import Paddle +from ball import Ball +from scoreboard import Scoreboard +import time +screen = Screen() +screen.bgcolor("black") +screen.setup(width=800, height=600) +screen.title('Pong Game') +screen.tracer(0) +r_paddle=Paddle((350,0)) +l_paddle=Paddle((-350,0)) +ball=Ball() +scoreboard=Scoreboard() + +screen.listen() +screen.onkey(r_paddle.go_up, "Up") +screen.onkey(r_paddle.go_down, "Down") +screen.onkey(l_paddle.go_up, "w") +screen.onkey(l_paddle.go_down, "s") +game_is_on = True +while game_is_on: + screen.update() + time.sleep(ball.move_speed) + ball.move() + #detect collision with wall + if ball.ycor() > 280 or ball.ycor() < -280: + #bounce + ball.bounce_y() + #detect collision with paddle + if ball.distance(r_paddle) < 50 and ball.xcor() > 320 or ball.distance(l_paddle) < 50 and ball.xcor() < -320: + ball.bounce_x() + #detect if r_paddle misses + if ball.xcor() > 380: + ball.reset_position() + scoreboard.l_point() + if ball.xcor() < -380: + ball.reset_position() + scoreboard.r_point() +screen.exitonclick() diff --git a/Pong Arcade Game/ball.py b/Pong Arcade Game/ball.py new file mode 100644 index 0000000..f7be0f2 --- /dev/null +++ b/Pong Arcade Game/ball.py @@ -0,0 +1,26 @@ +from turtle import Turtle +class Ball(Turtle): + def __init__(self): + super().__init__() + self.shape("circle") + self.color("white") + self.penup() + self.x_move = 10 + self.y_move = 10 + self.move_speed = 0.1 + + def move(self): + new_x = self.xcor() + self.x_move + new_y = self.ycor() + self.y_move + self.goto(new_x, new_y) + + def bounce_y(self): + self.y_move *= -1 + self.move_speed *= 0.9 + def bounce_x(self): + self.x_move *= -1 + self.move_speed *= 0.9 + def reset_position(self): + self.goto(0,0) + self.bounce_x() + self.move_speed = 0.1 \ No newline at end of file diff --git a/Pong Arcade Game/paddle.py b/Pong Arcade Game/paddle.py new file mode 100644 index 0000000..ed7ce67 --- /dev/null +++ b/Pong Arcade Game/paddle.py @@ -0,0 +1,16 @@ +from turtle import Turtle + +class Paddle(Turtle): + def __init__(self, position): + super().__init__() + self.shape("square") + self.shapesize(stretch_wid=5, stretch_len=1) + self.color("white") + self.penup() + self.goto(position) + def go_up(self): + new_y = self.ycor() + 20 + self.goto(self.xcor(), new_y) + def go_down(self): + new_y = self.ycor() - 20 + self.goto(self.xcor(), new_y) \ No newline at end of file diff --git a/Pong Arcade Game/scoreboard.py b/Pong Arcade Game/scoreboard.py new file mode 100644 index 0000000..036df76 --- /dev/null +++ b/Pong Arcade Game/scoreboard.py @@ -0,0 +1,23 @@ +from turtle import Turtle + +class Scoreboard(Turtle): + def __init__(self): + super().__init__() + self.color("white") + self.penup() + self.hideturtle() + self.l_score = 0 + self.r_score = 0 + self.update_scoreboard() + def update_scoreboard(self): + self.clear() + self.goto(-100, 200) + self.write(self.l_score, align="center", font=("Courier", 80, "normal")) + self.goto(100, 200) + self.write(self.r_score, align="center", font=("Courier", 80, "normal")) + def l_point(self): + self.l_score += 1 + self.update_scoreboard() + def r_point(self): + self.r_score += 1 + self.update_scoreboard()