2019年4月27日土曜日

「Progate」のじゃんけんゲーム 改良その5

プログラムの学習サイト「Progate」の「Python学習コースⅢ」のじゃんけんゲームを改良したプログラム。

じゃんけんをはじめます
名前を入力してください:テストプレイヤー
--------------------------------------------------------------

何を出しますか?(0: ゲーム終了, 1: グー, 2: チョキ, 3: パー)
数字で入力してください:2

テストプレイヤーは 「チョキ」 を出しました
コンピューターは 「グー」 を出しました

結果は 「負け」 でした

0勝 1負 0引き分け です

--------------------------------------------------------------

何を出しますか?(0: ゲーム終了, 1: グー, 2: チョキ, 3: パー)
数字で入力してください:5

正しい数値を入力してください
--------------------------------------------------------------

何を出しますか?(0: ゲーム終了, 1: グー, 2: チョキ, 3: パー)
数字で入力してください:3

テストプレイヤーは 「パー」 を出しました
コンピューターは 「パー」 を出しました

結果は 「引き分け」 でした

0勝 1負 1引き分け です

--------------------------------------------------------------

何を出しますか?(0: ゲーム終了, 1: グー, 2: チョキ, 3: パー)
数字で入力してください:2

テストプレイヤーは 「チョキ」 を出しました
コンピューターは 「チョキ」 を出しました

結果は 「引き分け」 でした

0勝 1負 2引き分け です

--------------------------------------------------------------

何を出しますか?(0: ゲーム終了, 1: グー, 2: チョキ, 3: パー)
数字で入力してください:0

ゲームを終了します
>>> 


#coding:utf-8

def validate(hand):
    if hand == '1' or hand == '2' or hand == '3' :
        return True
    else:
        return False

def print_hand(hand, name='ゲスト'):
    hands = ['グー', 'チョキ', 'パー']
    print(name + 'は 「' + hands[hand] + '」 を出しました')

def judge(player, computer):
    if player == computer:
        return '引き分け'
    elif player == 0 and computer == 1:
        return '勝ち'
    elif player == 1 and computer == 2:
        return '勝ち'
    elif player == 2 and computer == 0:
        return '勝ち'
    else:
        return '負け'


import random

player_win = 0
computer_win = 0
draw = 0
            
print('じゃんけんをはじめます')

player_name = input('名前を入力してください:')

while True :
    
    print('--------------------------------------------------------------')
    print('')
    print('何を出しますか?(0: ゲーム終了, 1: グー, 2: チョキ, 3: パー)')

    player_hand = input('数字で入力してください:')

    print('')

    if player_hand == '0':
        print('ゲームを終了します')
        break

    else:    
        if validate(player_hand):
            
            computer_hand = random.randint(0,2)

            
            
            if player_name == '':
                print_hand(int(player_hand)-1)
            else:
                print_hand(int(player_hand)-1, player_name)

            print_hand(computer_hand, 'コンピューター')
            
            result = judge(int(player_hand)-1, computer_hand)

            print('')
            print('結果は 「' + result + '」 でした')
        
            if result == '勝ち':
                player_win += 1
            elif result == '負け':
                computer_win += 1
            else :
                draw += 1
            
            print('')
            print(str(player_win) + '勝 ' + str(computer_win) + '負 ' + str(draw) + '引き分け です')
            print('')
            
        else:
            print('正しい数値を入力してください')


メモ

・勝ち負け引き分けの数を出るようにしました。

0 件のコメント:

コメントを投稿