【再掲】リクエスト:じゃんけんゲームの作成
コンピュータとじゃんけんをするプログラムを作成してください。
レベル1:コンピュータとのタイマン
コンピュータはひとりとして、プレイヤーの手を入力すると、コンピュータとのじゃんけんの結果が返ってくるようにしてください。
(想定外の入力はないものとします)
実装例
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | import numpy as np # 定数定義 N_HAND = 3 # じゃんけんの手の種類 ROCK = 0 SCISSORS = 1 PAPER = 2 class Cpu( object ): """ CPUを作成するクラス Attributes: hand (int): じゃんけんの手(グー(0)、チョキ(1)、パー(2)) """ def __init__( self ): self .hand = np.random.randint(N_HAND) def get_hand( self ): """ じゃんけんの手を決める。 Args: None Returns: None """ self .hand = np.random.randint(N_HAND) def judge_janken(my_hand, cpu_hand): """ じゃんけんの勝敗結果を返す Args: my_hand (int): プレイヤーの手 cpu_hand (int): CPUの手 Returns: result (int): 0:勝ち, 1:負け, 2:引き分け """ if my_hand = = cpu_hand: result = 2 else : if my_hand = = ROCK: if cpu_hand = = SCISSORS: result = 0 elif cpu_hand = = PAPER: result = 1 if my_hand = = SCISSORS: if cpu_hand = = PAPER: result = 0 elif cpu_hand = = ROCK: result = 1 if my_hand = = PAPER: if cpu_hand = = ROCK: result = 0 elif cpu_hand = = SCISSORS: result = 1 return result def show_result(result): """ 勝敗結果を表示する Args: result (int): 0:勝ち, 1:負け, 2:引き分け """ if result = = 0 : print ( "あなたの勝ちです" ) elif result = = 1 : print ( "あなたの負けです" ) elif result = = 2 : print ( "引き分けです" ) def game_start(): """ じゃんけんを開始するメイン関数 """ print ( "じゃんけんをします" ) n_player = 2 # cpuインスタンスの作成 cpus = Cpu() print ( "あなたの手は? (0:グー、1:チョキ、2:パー)" ) my_hand = int ( input ()) result = judge_janken(my_hand, cpus.hand) print (f "CPUの手は{cpus.hand}です" ) show_result(result) if __name__ = = "__main__" : game_start() |
今回のポイント
- 入力インタフェース
- 80行目で標準入力を受け付けて数値に変換しています。
- CPUクラスの作成
- 9〜25行目のコードでCPUクラスを作成しています。
これはCPUをオブジェクトにしておくと考えやすかったのと、CPUが増えた場合の処理が簡単になると見込んだためです。
- 9〜25行目のコードでCPUクラスを作成しています。
- 乱数の使用
- 15行目、25行目でCPUの手は指定した整数範囲をランダムに返すrandom.randint()関数を使用しています。
- DocString
- 各関数やクラスにはGoogle styleのDocStringを記載しています。
- 参考:Example Google Style Python Docstrings
終わりに
実装例を紹介しましたが、例と書いているようにあくまで一例です、
今回のコードはGitHubにも上げていきますのでみなさんのコードもぜひ共有してください。
コメント