0
0

今年は、パリオリンピックが開催される。

そこで、私はよくサッカーの試合でエンドを決めるために使われているコイントスをPythonを使い、プログラムコードを書くことについて、興味を持った。

What is Coin Toss?

硬貨などを投げ上げて、落ちたそれの裏表で物事を決めることである。

プログラムコード

import random

def get_user_choice():
    while True:
        try:
            user_choice = int(input("What do you choose? Type 1 for Heads, 2 for Tails, or 3 to Quit: "))
            if user_choice not in [1, 2, 3]:
                print("Invalid input. Please choose 1 for Heads, 2 for Tails, or 3 to Quit.")
            else:
                return user_choice
        except ValueError:
            print("Invalid input. Please enter a number.")

def main():
    print("Welcome to the Heads or Tails game!")

    while True:
        user_choice = get_user_choice()

        if user_choice == 3:
            print("Thanks for playing!")
            break

        coin = random.randint(1, 2)  # 1 for Heads, 2 for Tails
        print("Computer flips the coin...")

        if coin == 1:
            print("It's Heads!")
        else:
            print("It's Tails!")

        if user_choice == coin:
            print("Congratulations! You guessed correctly.")
        else:
            print("Sorry, you guessed wrong. Better luck next time!")

        play_again = input("Do you want to play again? (yes/no): ").lower()
        if play_again != "yes":
            print("Thanks for playing!")
            break

        print() 

if __name__ == "__main__":
    main()

コードの説明と遊び方

最初に、画面に表示される指示に従って、1(表)か2(裏)を選びます。
コンピュータも同時にランダムで1か2を選びます。
コンピュータの選んだ結果が表示されます。もし1なら「表」、2なら「裏」と表示されます。
プレイヤーとコンピュータの選択が一致すれば、「おめでとうございます!当たりです!」(Congratulations! と表示されます。
違う場合は、「残念!外れです。次は頑張ってください!」と表示されます。
各ラウンドの後、もう一度遊ぶかどうかを尋ねられます。「はい」を選べば再度ゲームが始まります。選ばない場合はプログラムが終了します。
注意点:
プレイヤーが1(表)か2(裏)以外の数字を入力した場合、無効な入力として扱われます。
ゲームを終了するには、3を入力してください。

この場合、プレイヤーはコンピューターが選んだコインを予想するだけになってしまう。
そこで、私はコンピューターとプレイヤーがコイントスゲームをできるようなプログラムコードを書いてみた。

改良したプログラムコード

import random

def get_user_choice():
    while True:
        try:
            user_choice = int(input("表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: "))
            if user_choice not in [1, 2]:
                print("無効な入力です。1を入力して表、2を入力して裏を選んでください。")
            else:
                return user_choice
        except ValueError:
            print("無効な入力です。数字を入力してください。")

def main():
    print("コンピュータとのコインゲームに挑戦しましょう!最初に5回勝った方が勝者です。デュースの場合もあります。")

    computer_wins = 0
    player_wins = 0

    while computer_wins < 5 and player_wins < 5:
        print("\n--- 新しいラウンド ---")
        print(f"現在のスコア: プレイヤー {player_wins} - {computer_wins} コンピュータ")

        user_choice = get_user_choice()
        coin = random.randint(1, 2)  # 1が表、2が裏

        if coin == 1:
            print("コンピュータが表を選びました。")
        else:
            print("コンピュータが裏を選びました。")

        if user_choice == coin:
            print("あなたの勝ちです!")
            player_wins += 1
        else:
            print("コンピュータの勝ちです。")
            computer_wins += 1

        # デュースの場合の処理
        if player_wins == computer_wins and player_wins == 4:
            print("\nデュースです!最後の勝者を決めるためのラウンドです。\n")

    if player_wins > computer_wins:
        print("おめでとうございます!あなたの勝ちです!")
    else:
        print("残念!コンピュータの勝ちです。")

if __name__ == "__main__":
    main()

プログラムコードを使った実際のゲームプレイ

コンピュータとのコインゲームに挑戦しましょう!最初に3回勝った方が勝者です。デュースの場合もあります。

--- 新しいラウンド ---
現在のスコア: プレイヤー 0 - 0 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが裏を選びました。
コンピュータの勝ちです。

--- 新しいラウンド ---
現在のスコア: プレイヤー 0 - 1 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが表を選びました。
コンピュータの勝ちです。

--- 新しいラウンド ---
現在のスコア: プレイヤー 0 - 2 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが表を選びました。
あなたの勝ちです!

--- 新しいラウンド ---
現在のスコア: プレイヤー 1 - 2 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが表を選びました。
あなたの勝ちです!

デュースです!最後の勝者を決めるためのラウンドです。


--- 新しいラウンド ---
現在のスコア: プレイヤー 2 - 2 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが裏を選びました。
あなたの勝ちです!
おめでとうございます!あなたの勝ちです!

しかし、ここで疑問点を感じた。2-2でデュースなら、本来は4点取った方が勝ちになる。
この場合、あなたの勝ちです!と出力した。

デュースを含めたプログラムコード

import random

def get_user_choice():
    while True:
        try:
            user_choice = int(input("表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: "))
            if user_choice not in [1, 2]:
                print("無効な入力です。1を入力して表、2を入力して裏を選んでください。")
            else:
                return user_choice
        except ValueError:
            print("無効な入力です。数字を入力してください。")

def main():
    print("コンピュータとのコインゲームに挑戦しましょう!最初に5回勝った方が勝者です。デュース(同点)が発生した場合、相手に2点差がつくまで続きます。")

    computer_wins = 0
    player_wins = 0

    while computer_wins < 5 and player_wins < 5:
        print("\n--- 新しいラウンド ---")
        print(f"現在のスコア: プレイヤー {player_wins} - {computer_wins} コンピュータ")

        user_choice = get_user_choice()
        coin = random.randint(1, 2)  # 1が表、2が裏

        if coin == 1:
            print("コンピュータが表を選びました。")
        else:
            print("コンピュータが裏を選びました。")

        if user_choice == coin:
            print("あなたの勝ちです!")
            player_wins += 1
        else:
            print("コンピュータの勝ちです。")
            computer_wins += 1

        # デュース(同点)の処理
        if player_wins == computer_wins and player_wins >= 4:
            print("\nデュースです!相手に2点差がつくまで続けます。\n")

            while abs(player_wins - computer_wins) < 2:
                user_choice = get_user_choice()
                coin = random.randint(1, 2)

                if coin == 1:
                    print("コンピュータが表を選びました。")
                else:
                    print("コンピュータが裏を選びました。")

                if user_choice == coin:
                    print("あなたの勝ちです!")
                    player_wins += 1
                else:
                    print("コンピュータの勝ちです。")
                    computer_wins += 1

    if player_wins >= 10:
        print("おめでとうございます!あなたの勝ちです!")
    else:
        print("残念!コンピュータの勝ちです。")

if __name__ == "__main__":
    main()

デュースを含めたプログラムコードの実際のゲームプレイ

コンピュータとのコインゲームに挑戦しましょう!最初に5回勝った方が勝者です。デュース(同点)が発生した場合、相手に2点差がつくまで続きます。

--- 新しいラウンド ---
現在のスコア: プレイヤー 0 - 0 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが裏を選びました。
あなたの勝ちです!

--- 新しいラウンド ---
現在のスコア: プレイヤー 1 - 0 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが裏を選びました。
コンピュータの勝ちです。

--- 新しいラウンド ---
現在のスコア: プレイヤー 1 - 1 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが表を選びました。
コンピュータの勝ちです。

--- 新しいラウンド ---
現在のスコア: プレイヤー 1 - 2 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが裏を選びました。
コンピュータの勝ちです。

--- 新しいラウンド ---
現在のスコア: プレイヤー 1 - 3 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが裏を選びました。
あなたの勝ちです!

--- 新しいラウンド ---
現在のスコア: プレイヤー 2 - 3 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが裏を選びました。
あなたの勝ちです!

--- 新しいラウンド ---
現在のスコア: プレイヤー 3 - 3 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが表を選びました。
コンピュータの勝ちです。

--- 新しいラウンド ---
現在のスコア: プレイヤー 3 - 4 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが表を選びました。
あなたの勝ちです!

デュースです!相手に2点差がつくまで続けます。

表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが表を選びました。
コンピュータの勝ちです。
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが表を選びました。
6-4で、あなたの勝ちです!

このように、ちゃんとデュースを含めたプログラムコードを作成することができた。

皆さんも時間がある時に、このプログラムコードを参考にして、コイントスゲームをやってみてはいかがでしょうか。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0