규칙
- 두 명의 플레이어는 더 높은 점수를 얻기 위해 경쟁해야 한다.
- 상대방의 방어를 뚫고 공을 넣으면 점수를 획득한다.
- 공방이 진행될수록 게임의 템포가 빨라진다.
코드
from turtle import Screen
from paddle import Paddle
from ball import Ball
from scoreboard import Scoreboard
import time
win = Screen()
win.setup(width=800, height=600)
win.bgcolor("black")
win.title("PONG")
win.tracer(0)
p1 = Paddle((-350, 0))
p2 = Paddle((350, 0))
ball = Ball()
scoreboard = Scoreboard()
win.update()
win.onkeypress(p1.up, "w")
win.onkeypress(p1.down, "s")
win.onkeypress(p2.up, "Up")
win.onkeypress(p2.down, "Down")
win.listen()
game = True
while game:
win.update()
time.sleep(ball.refresh)
ball.move()
if ball.xcor() >= 330 and p2.distance(ball) <= 60 or ball.xcor() <= -330 and p1.distance(ball) <= 60:
ball.collision()
if ball.xcor() >= 410:
scoreboard.add_score_p1()
ball.miss()
elif ball.xcor() <= -410:
scoreboard.add_score_p2()
ball.miss()
win.exitonclick()
from turtle import Turtle
class Paddle(Turtle):
def __init__(self, pos):
super().__init__()
self.shape("square")
self.lt(90)
self.color("white")
self.shapesize(stretch_wid=1, stretch_len=5)
self.penup()
self.goto(pos)
def up(self):
self.fd(20)
def down(self):
self.fd(-20)
from turtle import Turtle
SPEED_X = 10
SPEED_Y = 10
class Ball(Turtle):
def __init__(self):
super().__init__()
self.shape("circle")
self.color("white")
self.penup()
self.speed_x = SPEED_X
self.speed_y = SPEED_Y
self.refresh = 0.1
def move(self):
self.goto(self.xcor()+self.speed_x, self.ycor()+self.speed_y)
if self.ycor() >= 285 or self.ycor() <= -280:
self.bounce()
def bounce(self):
self.speed_y *= -1
def collision(self):
self.speed_x *= -1
self.refresh *= 0.9
def miss(self):
self.collision()
self.refresh = 0.1
self.home()
from turtle import Turtle
FONT = ("Courier", 50, "normal")
class Scoreboard(Turtle):
def __init__(self):
super().__init__()
self.hideturtle()
self.color("white")
self.penup()
self.p1_score = 0
self.p2_score = 0
self.goto(0, 200)
self.update_score()
def update_score(self):
self.clear()
self.write(f"{self.p1_score} | {self.p2_score}", align="center", font=FONT)
def add_score_p1(self):
self.p1_score += 1
self.update_score()
def add_score_p2(self):
self.p2_score += 1
self.update_score()
실행 결과