Pythonでじゃんけんゲームを作ろう
今回は前回説明したrandom.choice()関数を使って、じゃんけんゲームを作ります。
じゃんけんはご存じのように「グー」「チョキ」「パー」の三すくみになっています。
ユーザーはグー、チョキ、パーのどれかを画面から入力して、コンピューターはグー、チョキ、パーをランダムに選択するようにします。
このゲームの仕様は、以下のようになります。
仕様
- ユーザーはグーの時は「a」、チョキの時は「b」、パーの時は「c」を入力する
- ユーザーがa、b、c以外を入力したらメッセージを表示してスクリプトを終了する
- コンピューターはランダムにグー、チョキ、パーを選択する
- ユーザーとコンピューターの出した値を表示する
- どちらが勝ったかを表示する
じゃんけんゲームのスクリプト
上記の仕様からじゃんけんゲームを作ると、以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
### インポート import random ### 辞書 dic = {"a":"グー", "b":"チョキ", "c":"パー"} try: ### 入力 print(">>> 選択してください") print(">>> a:グー b:チョキ c:パー") player = input(">>> ") ### 保存 play_act = dic[player] comp_act = dic[random.choice(list(dic.keys()))] ### 判定 if play_act == comp_act: result = "draw" elif play_act == "グー" and comp_act == "チョキ": result = "play" elif play_act == "チョキ" and comp_act == "パー": result = "play" elif play_act == "パー" and comp_act == "グー": result = "play" elif play_act == "グー" and comp_act == "パー": result = "comp" elif play_act == "チョキ" and comp_act == "グー": result = "comp" elif play_act == "パー" and comp_act == "チョキ": result = "comp" ### 表示 print("++ 自分 => [{}]".format(play_act)) print("++ 相手 => [{}]".format(comp_act)) ### 判定 if result == "draw": print("++ 引き分け ++") elif result == "play": print("++ 自分の勝利 ++") elif result == "comp": print("++ 相手の勝利 ++") except KeyError: print("!! a か b か c を入力してください !!") |
実行例
> python game.py
>>> 選択してください
>>> a:グー b:チョキ c:パー
>>> a
++ 自分 => [グー]
++ 相手 => [チョキ]
++ 自分の勝利 ++
スクリプト解説
2行目
random.choice()関数を使うので、randomライブラリーをインポートします。
5行目
じゃんけん用の辞書を定義します。
7行目
try文を使って、a、b、c以外を入力した場合の例外処理を行います。
14行目
入力した文字をキーとして、dic辞書から対応する値をplay_act変数に代入します。
15行目
この部分は少し分かりづらいですが、処理の内容を箇条書きにすると、以下のようになります。
・dic辞書のキーをリストに変換する。
・そのリスト [a, b, c] を引数としてrandom.choice()関数を呼び出す
・random.choice()関数によりa、b、cのどれかが選択される
・選択されたキーを元に、対応する値が選択される
・取得した値をcomp_act変数に代入する
なお、この処理は以下のように書くこともできます。
comp_act = random.choice(list(dic.values()))
18~31行目
互いが出した値から勝敗を判定します。
34、35行目
互いが出した値を表示します。
38~43行目
result変数を参照して、結果を表示します。
45行目
14行目でdic辞書を参照する時、a、b、c以外の値を入力するとKeyErrorという例外が発生します。