파이썬으로 스네이크 게임 만들기: 실전 프로젝트 가이드

파이썬으로 스네이크 게임 만들기: 실전 프로젝트 가이드

프로그래밍을 배우는 가장 재미있는 방법 중 하나는 바로 간단한 게임을 만드는 것입니다. 게임을 통해 로직을 이해하고, 코딩의 기본 원리를 익힐 수 있기 때문이에요. 오늘은 스네이크 게임을 파이썬으로 만들어 보면서, 실전 프로젝트를 통해 게임 개발의 기초를 배워볼 거예요.

스네이크 게임 소개

스네이크 게임은 1970년대에 처음 등장한 클래식 게임으로, 플레이어는 뱀을 조작하여 음식을 먹으며 성장하는 게임이에요. 뱀은 길어질수록 조작이 어려워지며, 장애물이나 자기 자신과 충돌하면 게임이 끝나게 되죠.

게임의 목표

  • 음식을 먹어 뱀의 길이를 증가시키기
  • 벽 또는 자기 몸에 부딪히지 않기
  • 가능한 한 높은 점수를 기록하기

Python과 Pygame 소개

이번 프로젝트에서는 파이썬의 Pygame 라이브러리를 사용할 거예요. Pygame은 게임 개발을 위한 Python 라이브러리로, 간단한 2D 게임을 만들기에 적합하죠. Pygame을 설치하려면, 터미널에서 다음 명령어를 입력해 주세요.

bash
pip install pygame

프로젝트 구조

이제 프로젝트를 시작해 볼거예요. 기본적인 프로젝트 구조는 다음과 같아요:

  • main.py (게임 실행 파일)
  • assets/
    • snake_head.png (뱀 머리 이미지를 저장)
    • food.png (음식 이미지를 저장)

코드 작성하기

이제 스네이크 게임의 코드를 작성해 볼까요. 아래는 간단한 스네이크 게임의 주요 코드들입니다.

색상 정의

white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)

화면 크기 설정

diswidth = 800
dis
height = 600

dis = pygame.display.setmode((diswidth, disheight))
pygame.display.set
caption(‘Snake Game’)

게임 매개변수 설정

snakeblock = 10
snake
speed = 15

clock = pygame.time.Clock()

뱀을 그리는 함수

def oursnake(snakeblock, snakelist):
for x in snake
list:
pygame.draw.rect(dis, black, [x[0], x[1], snakeblock, snakeblock])

메인 게임 함수

def gameLoop():
gameover = False
game
close = False

x1 = dis_width / 2
y1 = dis_height / 2

x1_change = 0
y1_change = 0

snake_list = []
length_of_snake = 1

foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0

while not game_over:

    while game_close == True:
        dis.fill(blue)
        font_style = pygame.font.SysFont("bahnschrift", 25)
        mesg = font_style.render("You Lost! Press C-Play Again or Q-Quit", True, red)
        dis.blit(mesg, [dis_width / 6, dis_height / 3])
        pygame.display.update()

        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_q:
                    game_over = True
                    game_close = False
                if event.key == pygame.K_c:
                    gameLoop()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                x1_change = -snake_block
                y1_change = 0
            elif event.key == pygame.K_RIGHT:
                x1_change = snake_block
                y1_change = 0
            elif event.key == pygame.K_UP:
                y1_change = -snake_block
                x1_change = 0
            elif event.key == pygame.K_DOWN:
                y1_change = snake_block
                x1_change = 0

    if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
        game_close = True

    x1 += x1_change
    y1 += y1_change
    dis.fill(blue)
    pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])
    snake_head = []
    snake_head.append(x1)
    snake_head.append(y1)
    snake_list.append(snake_head)
    if len(snake_list) > length_of_snake:
        del snake_list[0]

    for x in snake_list[:-1]:
        if x == snake_head:
            game_close = True

    our_snake(snake_block, snake_list)

    pygame.display.update()

    if x1 == foodx and y1 == foody:
        foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
        foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
        length_of_snake += 1

    clock.tick(snake_speed)

pygame.quit()
quit()

gameLoop()

코드 설명

  • 게임 설정: 색상, 화면 크기, 뱀의 속도 등 게임의 기본 설정을 정의했어요.
  • 게임 루프: 게임이 실행되는 메인 루프입니다. 상태에 따라 뱀을 움직이고, 충돌 검사 및 음식 먹기 동작을 수행해요.
  • 뱀 그리기: our_snake 함수를 통해 현재 뱀의 위치를 화면에 그리게 됩니다.

게임 실행 및 테스트

위 코드를 작성한 후 main.py 파일로 저장하고, 터미널에서 실행해 보세요. 게임이 잘 돌아가면 정말 뿌듯할 거예요. 물론 게임을 하면서 여러 추가 기능을 구현해 볼 수도 있습니다.

추가 가능 기능

  • 레벨 시스템: 점수가 일정 수준을 초과하면 뱀의 속도를 증가시키는 기능.
  • 스코어보드: 현재 점수를 화면에 표시하는 기능.
  • 배경 음악: 게임에 음향을 추가하여 몰입도를 높이는 기능.
  • 고급 그래픽: 더 나은 그래픽 요소와 애니메이션을 추가.

결론

스네이크 게임을 만들면서 프로그래밍의 기본기를 배울 수 있었어요. 이 프로젝트를 통해 얻은 경험이 앞으로의 프로그래밍 여정에 큰 도움이 될 것입니다. 게임 개발은 재미있을 뿐만 아니라 창의력을 발휘할 수 있는 좋은 기회예요. 지금 바로 시작해 보세요!

키 포인트 요약
키 포인트설명
파이썬과 Pygame게임 개발을 위한 강력한 도구
게임 루프의 중요성게임의 지속적인 업데이트를 가능하게 함
성장하는 뱀 조작음식을 먹으며 길어지는 뱀
추가 기능게임을 풍부하게 만드는 아이디어