【シンジ】戦略×エンジニア×Webデザイナー

Webコンサル、デザイン、サービス開発、経営に関することを呟きます。

Python初心者でも30分で作れる『じゃんけん』ゲーム(丁寧な解説付き)

f:id:Shinji0418s:20210309102318j:plain

どうも。株)WIREBASEの中村です。

 

この記事を読んでいる方はPython初心者の方でしょうか?

機能性や利便性からすごい人気を博しているPythonですが、Pythonを学ぶ上でどこから始めれば良いか分からない、という初心者の方も正直多いのではないでしょうか?

 

先ずは、『じゃんけん』ゲームみたいな簡単なものから作っていくことをおススメします。たった2時間で作れてしまうので、スキマ時間のトレーニングとしては凄く良いと思いますし、もう少し難易度の高いプログラムを作る上でも活かせることが多いと思います。

 

本記事のもくじは以下の通りです。

  • 1. 『じゃんけん』ゲームとは何か?
  • 2. Pythonで『じゃんけん』ゲームを作ってみる
    • 2-1. ユーザーがアクションを選択できるようにする
    • 2-2. コンピューターがアクションを選択できるようにする
    • 2-3. 勝者を決める
  • 3. 連続してプレイできるようにする
  • 4. 結論

 

本記事を読み終えると、、、

・『じゃんけん』ゲームを作れるようになる

・input()でユーザーの入力を取込むことができるようになる

・Whileループでじゃんけんぽいを連続してプレイすることができるようになる

先ずは以下の回答コードをチェックしてみてください。

import random

while True:
    user_action = input("選択してください (グー, チョキ, パー): ")
  possible_actions = ["グー", "チョキ", "パー"]
  computer_action = random.choice(possible_actions)
  print(f"\nあなたが選択したのは {user_action}, コンピューターが選択したのは {computer_action}.\n")

  if user_action == computer_action:
    print(f"両者が選んだのは {user_action}. 引き分けです!")
  elif user_action == "グー":
    if computer_action == "チョキ":
        print("グーがチョキに勝ちました! あなたの勝ちです!")
    else:
        print("パーがグーに勝ちました! あなたの負けです")
  elif user_action == "パー":
    if comuter_action == "グー":
        print("パーがグーに勝ちました! あなたの勝ちです!")
    else:
        print("チョキがパーに勝ちました! あなたの負けです")
  elif user_action == "チョキ":
    if computer_action == "パー":
        print("チョキがパーに勝ちました! あなたの勝ちです!")
    else:
        print("グーがチョキに勝ちました! あなたの負けです")

    play_again = input("もう一回プレイしますか? (はい/いいえ): ")
    if play_again.lower() != "はい":
        break

 

 

それでは、早速作っていきましょうー。

 

1. 『じゃんけん』ゲームとは何か?

物事や役割を決める時に使う『じゃんけんぽ』ゲーム。知らない人はほぼいないのではないでしょうか?

知らない方もいるもしれないので、やり方とルールを説明しておきます。じゃんけんゲームは主に2人が対面となって遊ぶもので、参加者は「じゃんけんぽい!」と同時に、手で、グー(拳)、チョキ(2本の指を出して)、パー(手のひらを広げて)を作ります。

 

ルールは簡単で、

・グーはチョキに勝つ

・チョキはパーに勝つ

・パーはグーに勝つ

です。

ここまでやり方とルールを整理できたところで、どのようにPythonでプログラムを作成するかを考えていきます。

 

2. Pythonで『じゃんけん』ゲームを作ってみる

上記のやり方とルールに沿って、じゃんけんゲームを作っていきます。

始めるために、先ずは『コンピューターがランダムに結果を出す』モジュールをインポートしましょう。

import random

 

これでコンピューターはランダムに結果を出してくれるようになりました。

 

2-1. ユーザーがアクションを選択できるようにする

次は『ユーザーがグー、チョキ、パーのいずれかを選択できる』ようにしてきます。

user_action = input("選択してください (グー, チョキ, パー): ")


2-2. コンピューターがアクションを選択できるようにする

ユーザーがアクションを入力したので、次はrandom.choice() を使ってコンピューターにランダムに結果を選択させる必要があります。

possible_actions = ["グー", "チョキ", "パー"]
computer_action = random.choice(possible_actions)

 

これで、コンピューターが、グー、チョキ、パーのリストからランダムに結果を選択できるようになりました。ここで、ユーザーにも分かりやすいように、また今後デバッグを起きた時のためにユーザーとコンピューターが選択した内容をprint しておきます。

print(f"\nあなたが選択したのは {user_action}, コンピューターが選択したのは {computer_action}.\n")

 

2-3. 勝者を決める
2人のプレイヤーがアクションを選択したところで、勝者を決める必要があります。
これは  if … elif … else でユーザーのアクションを比較して勝者を決めることができます。

プログラムは以下の通りです。

if user_action == computer_action:
    print(f"両者が選んだのは {user_action}. 引き分けです!")
elif user_action == "グー":
    if computer_action == "チョキ":
        print("グーがチョキに勝ちました! あなたの勝ちです!")
    else:
        print("パーがグーに勝ちました! あなたの負けです")
elif user_action == "パー":
    if comuter_action == "グー":
        print("パーがグーに勝ちました! あなたの勝ちです!")
    else:
        print("チョキがパーに勝ちました! あなたの負けです")
elif user_action == "チョキ":
    if computer_action == "パー":
        print("チョキがパーに勝ちました! あなたの勝ちです!")
    else:
        print("グーがチョキに勝ちました! あなたの負けです")

 

ちなみに、最初に引き分けの条件を定義することで、かなりの数のケースを最初に取り除くことができるため、効率的にプログラムが組めます。


全てのプログラムを繋ぎあわせると以下の通りです。

import random

user_action = input("選択してください (グー, チョキ, パー): ")
possible_actions = ["グー", "チョキ", "パー"]
computer_action = random.choice(possible_actions)
print(f"\nあなたが選択したのは {user_action}, コンピューターが選択したのは {computer_action}.\n")

if user_action == computer_action:
    print(f"両者が選んだのは {user_action}. 引き分けです!")
elif user_action == "グー":
    if computer_action == "チョキ":
        print("グーがチョキに勝ちました! あなたの勝ちです!")
    else:
        print("パーがグーに勝ちました! あなたの負けです")
elif user_action == "パー":
    if comuter_action == "グー":
        print("パーがグーに勝ちました! あなたの勝ちです!")
    else:
        print("チョキがパーに勝ちました! あなたの負けです")
elif user_action == "チョキ":
    if computer_action == "パー":
        print("チョキがパーに勝ちました! あなたの勝ちです!")
    else:
        print("グーがチョキに勝ちました! あなたの負けです")

これで、ユーザーの選択を取込み、コンピューターがランダムにアクションを選択して、勝者を決定するプログラムが出来上がりました。

 

但し、これだとじゃんけんゲームは1回したプレイできませんね・・・。

 

3.連続してプレイできるようにする

何回が連続して遊べるともっと楽しいと思うので、while loop を使って連続して無限にじゃんけんゲームで遊べるようにします。

 

import random

while True:
    user_action = input("選択してください (グー, チョキ, パー): ")
  possible_actions = ["グー", "チョキ", "パー"]
  computer_action = random.choice(possible_actions)
  print(f"\nあなたが選択したのは {user_action}, コンピューターが選択したのは {computer_action}.\n")

  if user_action == computer_action:
    print(f"両者が選んだのは {user_action}. 引き分けです!")
  elif user_action == "グー":
    if computer_action == "チョキ":
        print("グーがチョキに勝ちました! あなたの勝ちです!")
    else:
        print("パーがグーに勝ちました! あなたの負けです")
  elif user_action == "パー":
    if comuter_action == "グー":
        print("パーがグーに勝ちました! あなたの勝ちです!")
    else:
        print("チョキがパーに勝ちました! あなたの負けです")
  elif user_action == "チョキ":
    if computer_action == "パー":
        print("チョキがパーに勝ちました! あなたの勝ちです!")
    else:
        print("グーがチョキに勝ちました! あなたの負けです")

    play_again = input("もう一回プレイしますか? (はい/いいえ): ")
    if play_again.lower() != "はい":
        break

 

黄色にハイライトされた箇所で、ユーザーがもう一度プレイしたいかどうかを聞き、答えが"いいえ"であればゲームを中断する。"はい"であればコンソールを終了するまで無限にプレイできるようになりました。

 

これで完成です!

 

4. 結論

おめでとうございます!これであなたも初めてのじゃんけんプログラムを作ることができました。

 

以下の内容を学べたのではないでしょうか?

・『じゃんけん』ゲームを作れるようになる

・input()でユーザーの入力を取込むことができるようになる

・Whileループでじゃんけんぽいを連続してプレイすることができるようになる

 

今回は、かなり初歩的なプログラムの作成でしたが、もう少し難易度の高いプログラム作成にチャレンジする際もじゃんけんプログラムで培った内容は必ず活きてくると思います!

 

他にも上級編としてPythonで様々なものを作っているので以下にてチェックしてみてください。

wirebase-nakamura.hatenablog.com

 

wirebase-nakamura.hatenablog.com

 

それでは、今日はこの辺で。

 

 株)WIREBASE中村LINE↓

友だち追加

株)WIREBASE中村Twitter