본문 바로가기

[Pygame] 🧱 벽돌 깨기 게임 만들기 2강 | 패들(Paddle) 구현

@도마22026. 2. 19. 19:00
728x90


패들(Paddle) 구현

이번 강의에서는 벽돌깨기 게임에서 플레이어가 직접 조작하는
패들(Paddle) 을 구현합니다.

패들은 키보드 입력을 받아 좌우로 이동하는 객체이며,
이 강의를 통해 다음 개념을 학습하는 것이 목표입니다.

  • 키보드 입력 처리
  • 객체 이동
  • 화면 밖 이동 제한

파이게임 기본 구조 준비

패들을 구현하기 전에
파이게임 프로그램의 기본 구조를 먼저 준비합니다.

import pygame
import sys

pygame.init()

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Breakout Game")

이 코드는 파이게임을 초기화하고
게임 화면을 생성하는 가장 기본적인 설정입니다.


패들의 크기와 위치 설정

패들은 사각형(Rect)으로 표현합니다.
먼저 패들의 크기와 초기 위치를 변수로 정의합니다.

paddle_width = 100
paddle_height = 15

paddle_x = (SCREEN_WIDTH - paddle_width) // 2
paddle_y = SCREEN_HEIGHT - 40

패들은 화면 하단 중앙에 위치해야 하므로
화면 너비를 기준으로 x좌표를 계산합니다.


Rect 객체로 패들 생성하기

파이게임에서는 대부분의 충돌과 위치 처리를
Rect 객체를 사용해 처리합니다.

paddle_rect = pygame.Rect(
    paddle_x,
    paddle_y,
    paddle_width,
    paddle_height
)

이 Rect 객체 하나로

  • 위치
  • 크기
  • 충돌 판정

모두 처리할 수 있습니다.


게임 루프 만들기

게임은 게임 루프 안에서 계속 실행됩니다.

clock = pygame.time.Clock()
FPS = 60

running = True
while running:
    clock.tick(FPS)

이 구조는 매 프레임마다
화면을 갱신하고 입력을 처리하는 역할을 합니다.


종료 이벤트 처리

창을 닫았을 때 프로그램이 정상 종료되도록
이벤트 처리를 추가합니다.

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False

이 코드는 모든 파이게임 프로젝트에서
반드시 필요한 기본 코드입니다.


키보드 입력으로 패들 이동시키기

패들은 키보드를 누르고 있는 동안 계속 이동해야 합니다.
이를 위해 pygame.key.get_pressed() 방식을 사용합니다.

keys = pygame.key.get_pressed()

if keys[pygame.K_LEFT]:
    paddle_rect.x -= 7

if keys[pygame.K_RIGHT]:
    paddle_rect.x += 7

이 방식은
키를 누르고 있는 동안 매 프레임 이동하도록 만들어 줍니다.


화면 밖으로 나가지 않도록 제한하기

패들이 화면 밖으로 나가면 게임이 깨지게 됩니다.
따라서 이동 범위를 제한해야 합니다.

if paddle_rect.left < 0:
    paddle_rect.left = 0

if paddle_rect.right > SCREEN_WIDTH:
    paddle_rect.right = SCREEN_WIDTH

이 코드는 패들의 왼쪽과 오른쪽 경계를
화면 안으로 고정합니다.


화면에 패들 그리기

이제 패들을 화면에 그립니다.

screen.fill((0, 0, 0))
pygame.draw.rect(screen, (255, 255, 255), paddle_rect)
pygame.display.flip()

 

  • 화면을 검은색으로 지웁니다
  • 흰색 사각형으로 패들을 그립니다
  • 변경된 화면을 출력합니다

현재 단계의 결과

이번 강의까지 구현된 결과는 다음과 같습니다.

  • 검은 배경의 게임 화면이 표시됩니다
  • 화면 하단에 패들이 나타납니다
  • 방향키로 패들을 좌우로 이동할 수 있습니다

아직 공과 벽돌은 없지만,
플레이어 입력과 이동 구조는 완성된 상태입니다.



전체 코드

더보기
import pygame
import sys

pygame.init()

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Breakout Game")

BLACK = (0, 0, 0)
WHITE = (255, 255, 255)

clock = pygame.time.Clock()
FPS = 60

paddle_width = 100
paddle_height = 15
paddle_speed = 7

paddle_x = (SCREEN_WIDTH - paddle_width) // 2
paddle_y = SCREEN_HEIGHT - 40

paddle_rect = pygame.Rect(
    paddle_x,
    paddle_y,
    paddle_width,
    paddle_height
)

running = True
while running:
    clock.tick(FPS)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        paddle_rect.x -= paddle_speed
    if keys[pygame.K_RIGHT]:
        paddle_rect.x += paddle_speed

    if paddle_rect.left < 0:
        paddle_rect.left = 0
    if paddle_rect.right > SCREEN_WIDTH:
        paddle_rect.right = SCREEN_WIDTH

    screen.fill(BLACK)
    pygame.draw.rect(screen, WHITE, paddle_rect)
    pygame.display.flip()

pygame.quit()
sys.exit()

728x90
도마2
@도마2 :: 도마의 코드노트

초보자를 위한 코딩 강의를 정리합니다. 파이썬부터 C#, Unity 게임 제작까지 차근차근 기록합니다. — 도마

목차