728x90
아래 코드는 Pygame 라이브러리로 구현한 클래식 퐁 게임입니다. 먼저 pip install pygame
로 Pygame을 설치한 뒤, 이 코드를 pong.py
로 저장하고 python pong.py
로 실행하세요.
# pong.py
import pygame
import sys
# 초기화
pygame.init()
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Pong Game")
clock = pygame.time.Clock()
# 색상
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
# 패들 설정
PADDLE_WIDTH, PADDLE_HEIGHT = 10, 100
paddle_speed = 7
left_paddle = pygame.Rect(30, (HEIGHT - PADDLE_HEIGHT) // 2, PADDLE_WIDTH, PADDLE_HEIGHT)
right_paddle = pygame.Rect(WIDTH - 40, (HEIGHT - PADDLE_HEIGHT) // 2, PADDLE_WIDTH, PADDLE_HEIGHT)
# 공 설정
BALL_SIZE = 20
ball = pygame.Rect((WIDTH - BALL_SIZE)//2, (HEIGHT - BALL_SIZE)//2, BALL_SIZE, BALL_SIZE)
ball_speed_x, ball_speed_y = 5, 5
# 점수
left_score, right_score = 0, 0
font = pygame.font.SysFont(None, 48)
def draw():
screen.fill(BLACK)
pygame.draw.rect(screen, WHITE, left_paddle)
pygame.draw.rect(screen, WHITE, right_paddle)
pygame.draw.ellipse(screen, WHITE, ball)
pygame.draw.aaline(screen, WHITE, (WIDTH//2, 0), (WIDTH//2, HEIGHT))
score_text = font.render(f"{left_score} {right_score}", True, WHITE)
screen.blit(score_text, ((WIDTH - score_text.get_width())//2, 20))
pygame.display.flip()
def handle_input():
keys = pygame.key.get_pressed()
# 왼쪽 패들 (W/S)
if keys[pygame.K_w] and left_paddle.top > 0:
left_paddle.y -= paddle_speed
if keys[pygame.K_s] and left_paddle.bottom < HEIGHT:
left_paddle.y += paddle_speed
# 오른쪽 패들 (Up/Down)
if keys[pygame.K_UP] and right_paddle.top > 0:
right_paddle.y -= paddle_speed
if keys[pygame.K_DOWN] and right_paddle.bottom < HEIGHT:
right_paddle.y += paddle_speed
def update_ball():
global ball_speed_x, ball_speed_y, left_score, right_score
ball.x += ball_speed_x
ball.y += ball_speed_y
# 위/아래 벽 충돌
if ball.top <= 0 or ball.bottom >= HEIGHT:
ball_speed_y *= -1
# 패들 충돌
if ball.colliderect(left_paddle) or ball.colliderect(right_paddle):
ball_speed_x *= -1
# 골 득점
if ball.left <= 0:
right_score += 1
reset_ball()
if ball.right >= WIDTH:
left_score += 1
reset_ball()
def reset_ball():
global ball_speed_x, ball_speed_y
ball.center = (WIDTH//2, HEIGHT//2)
ball_speed_x *= -1
ball_speed_y *= -1
def main():
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
handle_input()
update_ball()
draw()
clock.tick(60)
if __name__ == "__main__":
main()
반응형
'08.개발&프로그래밍 > 1.파이썬' 카테고리의 다른 글
5. Python Number Guessing Game (숫자 맞추기 게임) (0) | 2025.07.18 |
---|---|
4. Python Rock–Paper–Scissors (가위바위보) 게임 (0) | 2025.07.18 |
2. Python Snake Game (뱀 게임) (0) | 2025.07.18 |
1. Python으로 구현한 틱택토 (Tic-Tac-Toe) 게임 (0) | 2025.07.18 |
15. Python Logical Errors(로직 오류) 완벽 가이드 (0) | 2025.07.18 |