
1. 2048 게임판 설계 소개
안녕하세요! 오늘은 2048 게임을 만들기 위한 첫 번째 단계로 게임판(그리드) 설계를 진행하겠습니다. 2048은 4x4 크기의 그리드에서 숫자 타일을 합쳐 2048을 만드는 퍼즐 게임입니다. 이번 강의에서는 4x4 그리드를 구현하고, 초기 숫자 배치 로직을 설계하며, 랜덤 숫자를 생성하고 게임판을 표시하는 실습을 진행하겠습니다.
2. 4x4 그리드 디자인
2048 게임판의 특징
- 4x4 크기의 2차원 리스트로 표현됨.
- 각 칸에는 0(빈 공간) 또는 2의 거듭제곱(2, 4, 8...)이 저장됨.
- 초기 시작 시, 무작위 위치에 숫자 2 또는 4가 생성됨.
예제 1: 4x4 그리드 초기화
import random
def create_grid():
return [[0] * 4 for _ in range(4)]
# 빈 4x4 게임판 생성
grid = create_grid()
print(grid)
출력 예시:
[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
3. 초기 숫자 배치 로직 구현
숫자 배치 규칙
- 게임이 시작되면 무작위 두 개의 위치에 숫자(2 또는 4)가 배치됨.
- 숫자 2는 90% 확률, 숫자 4는 10% 확률로 생성됨.
- random.choice()와 random.randint()를 활용하여 구현.
예제 2: 초기 숫자 배치 함수
import random
def add_new_number(grid):
empty_cells = [(r, c) for r in range(4) for c in range(4) if grid[r][c] == 0]
if empty_cells:
row, col = random.choice(empty_cells)
grid[row][col] = 2 if random.random() < 0.9 else 4
예제 3: 초기 숫자 두 개 배치하기
def initialize_game():
grid = create_grid()
add_new_number(grid)
add_new_number(grid)
return grid
# 초기화된 2048 게임판 생성
grid = initialize_game()
for row in grid:
print(row)
출력 예시:
[0, 0, 2, 0]
[0, 4, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 2]
4. 실습: 랜덤 숫자 생성 및 그리드 표시
문제 설명
- 4x4 게임판을 생성한 후, 초기 숫자를 무작위로 배치하고 게임판을 콘솔에 보기 좋게 표시하는 기능을 구현하세요.
코드
def print_grid(grid):
for row in grid:
print(" | ".join(str(cell).rjust(4) if cell != 0 else " " for cell in row))
print("-" * 21) # 가로줄 구분선
# 게임 초기화 및 출력
grid = initialize_game()
print_grid(grid)
출력 예시
| | 2 |
---------------------
| 4 | |
---------------------
| | |
---------------------
| | | 2
---------------------
설명
- print_grid() 함수를 사용해 보기 좋은 형태로 출력합니다.
- str(cell).rjust(4)를 활용하여 숫자를 오른쪽 정렬합니다.
- 빈 공간(0)은 공백(" ")으로 표시하여 가독성을 높입니다.
5. 실습 과제
1. 초기 숫자 배치 개수 변경
- 게임 시작 시 숫자 2개가 아니라 3개가 배치되도록 변경해 보세요.
2. 색상으로 콘솔 출력 개선하기
- colorama 라이브러리를 사용하여 숫자 2, 4, 8 등에 각각 다른 색상을 적용해 보세요.
pip install colorama
from colorama import Fore
print(Fore.YELLOW + "2048" + Fore.RESET)
3. 게임판 크기 조정 가능하도록 확장하기
- 4x4가 아닌 **사용자가 원하는 크기의 게임판(예: 5x5, 6x6 등)**을 생성할 수 있도록 코드를 수정하세요.
오늘 강의에서는 2048 게임을 만들기 위한 첫 단계로, 4x4 게임판을 설계하고, 초기 숫자를 배치하는 기능을 구현했습니다. 2차원 리스트를 활용하여 게임 데이터를 저장하고 관리하는 방법을 익혔으며, random 모듈을 이용해 숫자를 무작위로 배치하는 로직도 구현해 보았습니다.
이제 2048 게임의 기본적인 틀이 완성되었으며, 앞으로 남은 기능을 하나씩 추가하면서 완성도 높은 게임을 만들어갈 예정입니다. 이번 실습에서 배운 리스트 활용법과 랜덤 데이터 생성 기법은 다양한 프로그래밍 프로젝트에서도 매우 유용하게 쓰일 것입니다.
다음 강의에서는 사용자 입력을 받아 숫자를 이동시키고, 게임 로직을 구현하는 과정을 배워보겠습니다.
🚀 궁금한 점이나 피드백이 있다면 댓글로 남겨주세요. 여러분의 학습을 응원합니다! 😊
Python Day 19: PyGame 설치 및 기본 구조 - 게임 개발을 위한 첫걸음
1. PyGame 소개 및 설치 안녕하세요! 오늘은 파이썬을 활용한 게임 개발 라이브러리인 PyGame을 설치하고 기본적인 구조를 익혀보겠습니다. PyGame은 간단한 2D 게임을 개발할 수 있도록 다양한 기능
nerdcodex.tistory.com
Python Day 18: OOP 종합 실습 - 객체지향 프로그래밍을 활용한 프로젝트 설계
1. 객체지향 프로그래밍(OOP) 종합 실습 소개안녕하세요! 오늘은 객체지향 프로그래밍(OOP)의 개념을 종합적으로 활용하는 실습을 진행해보겠습니다. 지금까지 배운 클래스, 상속, 다형성, 메서드
nerdcodex.tistory.com
Python Day 17: 파이썬 상속과 다형성 - 객체지향 프로그래밍(OOP) 심화 학습
1. 상속과 다형성이란? 안녕하세요! 오늘은 객체지향 프로그래밍(OOP)의 중요한 개념인 **상속(Inheritance)**과 **다형성(Polymorphism)**에 대해 배워보겠습니다. 상속을 활용하면 기존 클래스를 확장하
nerdcodex.tistory.com
'파이썬(Python)' 카테고리의 다른 글
Python Day 22: 2048 게임판 UI 디자인 - 타일 색상 및 폰트 설정 (0) | 2025.03.04 |
---|---|
Python Day 21: 2048 게임 로직 구현 - 숫자 이동 및 합치기 (0) | 2025.03.01 |
Python Day 19: PyGame 설치 및 기본 구조 - 게임 개발을 위한 첫걸음 (0) | 2025.02.25 |
Python Day 18: OOP 종합 실습 - 객체지향 프로그래밍을 활용한 프로젝트 설계 (0) | 2025.02.20 |
Python Day 17: 파이썬 상속과 다형성 - 객체지향 프로그래밍(OOP) 심화 학습 (1) | 2025.02.18 |