본문 바로가기
카테고리 없음

[파이썬] 텍스트 기반 게임, 숫자 맞추기, RPG 및 가위바위보

by 개발자를 꿈꾸는 사람들과 함꼐 2025. 4. 3.

텍스트 기반 게임이란?

파이썬을 처음 배우는 사람들에게 가장 재미있고 성취감 있는 프로젝트 중 하나는 바로 텍스트 기반 게임 만들기입니다. 텍스트 기반 게임은 그래픽 없이 터미널(콘솔)에서 텍스트만으로 진행되는 게임으로, 간단한 구조로 게임 개발의 기본을 익힐 수 있습니다. 텍스트 기반 게임의 장점은 다음과 같습니다:

      
  • 복잡한 그래픽 없이 로직 구현에 집중할 수 있음
  •   
  • 조건문, 반복문, 함수, 리스트, 딕셔너리 등 기본기 통합 연습 가능
  •   
  • 생각보다 재미있고 창의적인 요소를 쉽게 추가할 수 있음
  •   
  • 완성 후 성취감이 크고 다른 사람에게도 공유하기 쉬움

대표적인 텍스트 기반 게임으로는 숫자 맞추기, 선택형 RPG, 가위바위보 등이 있습니다.

숫자 맞추기 게임 만들기

import random

answer = random.randint(1, 100)
tries = 0

print("숫자 맞추기 게임!")
print("1부터 100 사이의 숫자를 맞춰보세요.")

while True:
    guess = input("숫자를 입력하세요: ")

    if not guess.isdigit():
        print("숫자만 입력해주세요.")
        continue

    guess = int(guess)
    tries += 1

    if guess < answer:
        print("너무 작아요!")
    elif guess > answer:
        print("너무 커요!")
    else:
        print(f"정답입니다! 시도 횟수: {tries}회")
        break

위 코드는 사용자가 숫자를 추측하며 정답을 찾는 간단한 게임입니다. 입력 값 검증, 조건문, 반복문, 랜덤 함수 사용을 모두 포함하고 있어 기본기를 연습하기에 매우 좋습니다.

선택형 텍스트 RPG 만들기

def intro():
    print("당신은 어두운 동굴 앞에 서 있습니다.")
    print("1. 동굴 안으로 들어간다.")
    print("2. 마을로 돌아간다.")
    choice = input("선택하세요 (1/2): ")

    if choice == "1":
        cave()
    elif choice == "2":
        print("당신은 마을로 돌아가 안전하게 하루를 마칩니다.")
    else:
        print("잘못된 입력입니다. 다시 선택하세요.")
        intro()

def cave():
    print("동굴 안은 어둡고 음산합니다.")
    print("1. 왼쪽 길로 간다.")
    print("2. 오른쪽 길로 간다.")
    choice = input("선택하세요 (1/2): ")

    if choice == "1":
        print("괴물을 만나 전투가 벌어집니다!")
        battle()
    elif choice == "2":
        print("당신은 보물을 발견했습니다! 게임 클리어!")
    else:
        print("잘못된 입력입니다.")
        cave()

def battle():
    print("괴물과의 전투가 시작됩니다.")
    print("1. 공격한다.")
    print("2. 도망친다.")
    choice = input("선택하세요 (1/2): ")

    if choice == "1":
        print("용감히 싸워 이겼습니다! 축하합니다!")
    elif choice == "2":
        print("도망쳤지만 괴물이 쫓아와 게임 오버...")
    else:
        print("입력이 잘못되었습니다.")
        battle()

intro()

이 RPG 게임은 함수별로 장면을 나누고, 선택에 따라 다른 결과가 나오는 구조로 되어 있습니다. 함수 호출, 분기 처리, 사용자 입력을 체계적으로 연습할 수 있는 예제입니다.

가위바위보 게임

import random

options = ["가위", "바위", "보"]
user = input("가위, 바위, 보 중 하나를 입력하세요: ")
computer = random.choice(options)

print(f"컴퓨터: {computer}")

if user == computer:
    print("비겼습니다!")
elif (user == "가위" and computer == "보") or \
     (user == "바위" and computer == "가위") or \
     (user == "보" and computer == "바위"):
    print("이겼습니다!")
else:
    print("졌습니다!")

가위바위보 게임은 간단한 조건문과 랜덤 함수를 연습하기에 적절하며, GUI로도 확장하기 좋은 구조입니다. 그 외 텍스트 기반 게임을 더 흥미롭게 만들 수 있는 요소들은 다음과 같습니다:

  • 랜덤 전투 요소 추가: 공격/회피 성공률 적용
  • 아이템 시스템: 무기, 포션, 방어구 등 장착
  • 체력/경험치 시스템: RPG 요소 강화
  • 다중 엔딩: 선택에 따라 스토리 분기
  • 객체 지향 구조: 플레이어/몬스터 클래스로 확장