관리
← 記事一覧

Pythonの小規模プロジェクト1:脱出ゲームを作る

この記事はAIの支援を受けて原文を翻訳したものです。専門用語や数式は原文とあわせて確認してください。

Pythonで作る脱出ゲーム

こんにちは。今回はPythonを使って、簡単な脱出ゲームを作ってみます。ルールは簡単です。ランダムに設定された3桁の暗証番号を見つけて脱出します。暗証番号を10回以上間違えたり、途中で「re」と入力したりすると、ゲームが再開します。このゲームは、Pythonの基本的な入出力、条件分岐、繰り返しを使って作れます。

Pythonの小規模プロジェクト1:脱出ゲームを作る — 概念を説明するオリジナル図
概念を説明するオリジナル図

 

ゲームを始める

まず、ゲームを始める前に、暗証番号をランダムに生成する必要があります。Pythonのrandomモジュールを使い、0から9までの数字をランダムに3個選んで暗証番号に設定します。

 

import random

def generate_password():
    return [str(random.randint(0, 9)) for _ in range(3)]

 

暗証番号の入力と確認


ユーザーに暗証番号を入力してもらいます。各桁の数字を入力するたびに、正解かどうかを確認します。正解なら次の数字を入力するよう案内し、間違っていればヒントを出します。ヒントでは、入力した数字が正解より大きいか小さいかを知らせます。

 

def check_password(correct_password):
    attempt_count = 0
    wrong_count = 0

    for i in range(3):
        while True:
            user_input = input(f"{i+1}번째 자리의 숫자를 입력하고 엔터를 누르세요 (재시작하려면 're' 입력): ")
            if user_input.lower() == 're':
                print("게임을 재시작합니다.")
                return False
            attempt_count += 1
            if attempt_count >= 10:
                print("10회 이상 틀렸습니다. 게임을 다시 시작합니다.")
                return False
            if user_input == correct_password[i]:
                print("정확합니다! 다음 자리수를 입력하세요.")
                break
            else:
                wrong_count += 1
                print("틀렸습니다. 다시 시도해주세요.")
                if user_input < correct_password[i]:
                    print("힌트: 입력하신 숫자는 정답보다 작습니다.")
                else:
                    print("힌트: 입력하신 숫자는 정답보다 큽니다.")

 

ゲームを再開する機能

ゲームの途中で「re」と入力すると、いつでも新しくゲームを始められます。

Pythonの小規模プロジェクト1:脱出ゲームを作る — 本文の要点を示すオリジナル図
本文の要点を示すオリジナル図

ゲームの完成と試行回数

暗証番号のすべての桁が正解したら、何回間違えたかをユーザーに知らせ、成功メッセージを出力します。10回以上間違えた場合は、自動的にゲームが再開します。

 

def check_password(correct_password):
    attempt_count = 0
    wrong_count = 0

    for i in range(3):
        while True:
            user_input = input(f"{i+1}번째 자리의 숫자를 입력하고 엔터를 누르세요 (재시작하려면 're' 입력): ")
            if user_input.lower() == 're':
                print("게임을 재시작합니다.")
                return False
            attempt_count += 1
            if attempt_count >= 10:
                print("10회 이상 틀렸습니다. 게임을 다시 시작합니다.")
                return False
            if user_input == correct_password[i]:
                print("정확합니다! 다음 자리수를 입력하세요.")
                break
            else:
                wrong_count += 1
                print("틀렸습니다. 다시 시도해주세요.")
                if user_input < correct_password[i]:
                    print("힌트: 입력하신 숫자는 정답보다 작습니다.")
                else:
                    print("힌트: 입력하신 숫자는 정답보다 큽니다.")

 

最後に、上のコードを使って作った全体のコードは、次のとおりです。

import random

# 비밀번호를 랜덤으로 생성하는 함수입니다.
def generate_password():
    return [str(random.randint(0, 9)) for _ in range(3)]

# 사용자가 입력한 비밀번호를 검증하고 힌트를 제공하는 함수입니다.
def check_password(correct_password):
    attempt_count = 0  # 시도 횟수를 카운트하는 변수입니다.
    wrong_count = 0    # 잘못된 입력 횟수를 카운트하는 변수입니다.

    for i in range(3):
        while True:
            user_input = input(f"{i+1}번째 자리의 숫자를 입력하고 엔터를 누르세요 (재시작하려면 're' 입력): ")
            if user_input.lower() == 're':
                print("게임을 재시작합니다.")
                return False  # 게임 재시작을 위해 False를 반환합니다.
            attempt_count += 1
            if attempt_count >= 10:
                print("10회 이상 틀렸습니다. 게임을 다시 시작합니다.")
                return False
            if user_input == correct_password[i]:
                print("정확합니다! 다음 자리수를 입력하세요.")
                break
            else:
                wrong_count += 1
                print("틀렸습니다. 다시 시도해주세요.")
                if user_input < correct_password[i]:
                    print("힌트: 입력하신 숫자는 정답보다 작습니다.")
                else:
                    print("힌트: 입력하신 숫자는 정답보다 큽니다.")

    print(f"비밀번호를 맞추기 위해 총 {wrong_count}번 틀렸습니다.")
    return True

# 게임을 시작하는 함수입니다.
def start_game():
    print("방탈출 게임에 오신 것을 환영합니다. 비밀번호는 3자리 숫자입니다.")

    while True:
        correct_password = generate_password()
        print(f"비밀번호가 설정되었습니다. (테스트를 위해 비밀번호를 출력합니다: {''.join(correct_password)})")
        if check_password(correct_password):
            print("비밀번호가 모두 맞습니다! 방탈출에 성공하셨습니다!")
            break

# 게임을 시작합니다.
start_game()

 

本文の理解を助けるために制作したオリジナルイラストです。

Tistoryの原文 ↗