셀 격자
Coddy의 Pygame으로 게임 만들기 코스 레슨. 41개 중 19번째.
Snake는 격자 위에서 움직입니다. 창은 가로 24칸, 세로 18칸이며 각 칸은 한 변이 20픽셀이고, 뱀은 한 번에 한 칸씩 움직입니다.
칸 단위로 작업하고, 그릴 때만 픽셀로 변환하세요. 셀 (col, row)은 픽셀 위치 (col * 20, row * 20)에서 시작합니다. 각 셀을 가로세로 각각 2픽셀 작게 그리고 각 가장자리에서 1픽셀씩 안쪽으로 그리면 이웃한 셀 사이에 얇은 간격이 생겨 뱀의 몸통 마디를 구분할 수 있습니다.
def draw_cell(cell, color):
col, row = cell
pygame.draw.rect(screen, color, (col * CELL + 1, row * CELL + 1, CELL - 2, CELL - 2))col, row = cell은 튜플의 값을 두 변수에 풀어 넣습니다. CELL, COLS, ROWS와 같은 상수에 숫자를 넣어 관리하세요. 코드에 각 숫자의 의미가 드러나며, 하나를 바꾸면 게임 전체가 바뀝니다.
챌린지
쉬움격자 칸 위에 뱀의 머리를 그리세요.
- 반복문 위에
draw_cell(cell, color)을 작성하세요. 위와 같이 각 변에서 1픽셀 안쪽에 칸 하나를 그리는 함수입니다. head = (5, 9)를 설정하세요.- 화면을 채운 후
draw_cell(head, (180, 255, 160))으로 머리를 그리세요.
‘플레이’를 누르세요. 9번째 행의 왼쪽에 초록색 칸이 놓입니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
import pygame
CELL = 20
COLS, ROWS = 24, 18
pygame.init()
screen = pygame.display.set_mode((COLS * CELL, ROWS * CELL))
pygame.display.set_caption("Snake")
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((30, 30, 46))
pygame.display.flip()
clock.tick(10)
pygame.quit()
Pygame으로 게임 만들기의 모든 레슨
직접 연습해 보세요: Pygame 플레이그라운드