퐁 게임

Malman Bunzirr·2022년 6월 14일
0

규칙

  1. 두 명의 플레이어는 더 높은 점수를 얻기 위해 경쟁해야 한다.
  2. 상대방의 방어를 뚫고 공을 넣으면 점수를 획득한다.
  3. 공방이 진행될수록 게임의 템포가 빨라진다.

코드

# main.py
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()
# paddle.py
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)
# ball.py
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()
# scoreboard.py
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()

실행 결과

0개의 댓글