본문 바로가기

[Pygame] 🐍 스네이크 게임 만들기 2강 | 뱀 머리 그리기 (격자 좌표 이해)

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


2강에서 할 일

2강에서는 화면에 초록색 뱀의 머리 1칸을 그립니다.

  • 격자 좌표(칸 단위) 개념을 이해합니다
  • 좌표를 픽셀로 변환합니다
  • 초록색 사각형으로 뱀 머리를 화면에 표시합니다

1) 뱀은 ‘픽셀’이 아니라 ‘격자’로 생각합니다

이번 게임에서 뱀의 위치는 픽셀 좌표가 아닌 격자 좌표로 관리합니다.

예시:

  • (0, 0) → 맨 왼쪽 위
  • (5, 5) → 가운데
  • (9, 9) → 맨 오른쪽 아래

이렇게 칸 단위로 관리하면:

  • 이동이 단순해집니다
  • 충돌 판정이 쉬워집니다
  • 코드가 깔끔해집니다

2) 뱀 머리의 시작 위치를 정합니다

시작 위치는 화면 정중앙으로 합니다.

  • 격자 기준 중앙: (5, 5)
snake_x = 5
snake_y = 5

이 값은 “칸 번호”입니다.
아직 픽셀이 아닙니다.


3) 격자 좌표를 픽셀 좌표로 바꿉니다

화면에 그리려면 픽셀 좌표가 필요합니다.

공식은 아주 단순합니다.

픽셀 좌표 = 격자 좌표 × CELL_SIZE
pixel_x = snake_x * CELL_SIZE
pixel_y = snake_y * CELL_SIZE

4) 뱀 색상을 정의합니다

뱀은 초록색으로 합니다.

GREEN = (0, 255, 0)

5) 사각형(Rect)으로 뱀 머리를 그립니다

파이게임에서는 pygame.Rect로 사각형을 만듭니다.

snake_rect = pygame.Rect(
    pixel_x,
    pixel_y,
    CELL_SIZE,
    CELL_SIZE
)
이제 이 사각형을 화면에 그립니다.
pygame.draw.rect(screen, GREEN, snake_rect)

6) 그리기 코드는 게임 루프 안에 둡니다

화면에 계속 보이게 하려면 게임 루프 안에서 그립니다.

구조는 다음 순서를 유지합니다.

  1. 이벤트 처리
  2. 배경 그리기
  3. 뱀 머리 그리기
  4. 화면 업데이트

2강 정리

이번 강의에서 배운 핵심은 다음과 같습니다.

  • 뱀 위치는 격자 좌표로 관리합니다
  • 격자 → 픽셀 변환 공식은 좌표 × CELL_SIZE입니다
  • pygame.Rect로 게임 오브젝트를 그립니다

이제 화면에 초록색 한 칸이 고정으로 보입니다.


전체 코드

더보기
import pygame
import sys

pygame.init()

# =========================
# 기본 설정
# =========================
CELL_SIZE = 40
GRID_SIZE = 10
SCREEN_SIZE = CELL_SIZE * GRID_SIZE

BLACK = (0, 0, 0)
GREEN = (0, 255, 0)

# =========================
# 화면 설정
# =========================
screen = pygame.display.set_mode((SCREEN_SIZE, SCREEN_SIZE))
pygame.display.set_caption("10x10 Snake Game")

clock = pygame.time.Clock()

# =========================
# 뱀 초기 위치 (격자 좌표)
# =========================
snake_x = 5
snake_y = 5

# =========================
# 게임 루프
# =========================
while True:
    # 이벤트 처리
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # 배경
    screen.fill(BLACK)

    # 격자 → 픽셀 변환
    pixel_x = snake_x * CELL_SIZE
    pixel_y = snake_y * CELL_SIZE

    # 뱀 머리 그리기
    snake_rect = pygame.Rect(
        pixel_x,
        pixel_y,
        CELL_SIZE,
        CELL_SIZE
    )
    pygame.draw.rect(screen, GREEN, snake_rect)

    # 화면 갱신
    pygame.display.update()

    # FPS
    clock.tick(10)

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

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

목차