반응형
테트리스는 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()
반응형