본문 바로가기
IT 관련 Tip/Python

파이썬으로 테트리스 게임 만들기, 기초, 입문, 코딩, 코드, 강좌, 강의, 배우기, 공부, 개발, Python

by How Money 2024. 4. 9.

 

테트리스는 1984년에 출시된 고전 게임으로, 블록을 회전하고 이동시켜 한 줄을 완성하는 게임입니다. 오늘은 파이썬을 사용하여 간단한 테트리스 게임을 만들어 보겠습니다.

 

준비물

  • 파이썬 인터프리터
  • Pygame 라이브러리

 

게임 구성 요소

테트리스 게임은 다음과 같은 요소로 구성됩니다.

  • 게임판: 블록이 움직이는 공간입니다.
  • 블록: 다양한 모양의 블록으로 이루어져 있습니다.
  • 점수: 완성된 줄 수에 따라 점수가 증가합니다.

 

게임 만들기

  • 게임판 만들기

게임판은 2차원 배열로 표현할 수 있습니다. 각 칸은 블록이 있을 수 있는지 여부를 나타내는 값을 저장합니다.

field = [[0 for _ in range(10)] for _ in range(20)]
  • 블록 만들기

블록은 7개의 모양으로 구성됩니다. 각 블록은 4개의 칸으로 이루어져 있으며, 회전할 수 있습니다.

blocks = [
    [
        [1, 1, 1, 1],
    ],
    [
        [1, 0, 0, 0],
        [1, 1, 1, 1],
    ],
    [
        [0, 1, 1, 0],
        [1, 1, 1, 1],
    ],
    [
        [1, 1, 0, 0],
        [0, 1, 1, 0],
        [0, 0, 1, 1],
    ],
    [
        [0, 1, 0, 0],
        [1, 1, 1, 0],
        [0, 0, 1, 0],
    ],
    [
        [1, 0, 0, 0],
        [1, 1, 0, 0],
        [0, 1, 1, 0],
    ],
    [
        [0, 0, 1, 0],
        [0, 1, 1, 0],
        [1, 1, 0, 0],
    ],
]
  • 점수 계산

한 줄이 완성되면 해당 줄을 삭제하고 점수를 증가시킵니다.

def remove_line(y):
    for x in range(10):
        field[y][x] = 0

    for y2 in range(y, 0, -1):
        for x in range(10):
            field[y2][x] = field[y2 - 1][x]

    score += 1
  • 게임 루프

게임 루프에서는 다음과 같은 작업을 반복합니다.

  • 블록을 이동하고 회전시킵니다.
  • 블록이 땅에 닿으면 게임판에 추가합니다.
  • 완성된 줄을 삭제합니다.
  • 점수를 표시합니다.
while True:
    # 블록 이동 및 회전
    # ...

    # 블록 낙하
    # ...

    # 완성된 줄 삭제
    # ...

    # 점수 표시
    # ...

    # 게임 종료 조건 확인
    # ...

 

전체 코드

import pygame

# 게임 설정
screen_width = 800
screen_height = 600
block_size = 30

# 게임판
field = [[0 for _ in range(10)] for _ in range(20)]

# 블록
blocks = [
    # ...
]

# 점수
score = 0

# Pygame 초기화
pygame.init()
screen = pygame.display.set_mode((screen_width, screen_height))

# 게임 루프
while True:
    # ...

# 게임 종료
pygame.quit()