Determining winner in Rock Paper Scissors [python]

别来无恙 提交于 2020-06-17 09:40:32

问题


I'm a beginner in python trying to create a RPS game where human is playing against a computer. The game is created such that it would be played over a number of determined rounds (best of 3 rounds). A draw is considered a point for each side.

My problem is setting the while condition. Initially I did this: while (player_count + computer_count) != winning_score : where the game ends when all round are played. However there will be instances where not all rounds needs to be played and the winner can already be determined (because of draws, each player will get a point).

How do I change the while condition such that when either players get winning_score/2 + 1, the game ends?


回答1:


hi you can probably do it like this

winning_count = winning_score/2+1

while(player_count < winning_count) and (computer_count < winning_count):
  ...

Once either the player win or the computer win is more than the winning count, it goes to False and the loop breaks




回答2:


Just in case you want to have another perspective on how to implement the game (and how to determine the winner), I exhort you to play with the following version:

import random


options = {1: 'Rock', 2: 'Scissors', 3: 'Paper'}
def play():
    score = [0, 0]
    while not any(wins == 3 for wins in score):
        print(f'SCORE\tUser: {score[0]} - PC: {score[1]}')
        user_selection = int(input('Enter your selection:{}> '.format(
            ''.join([f'\n{n}: {option}\n' for n, option in options.items()]))))
        pc_selection = random.randint(1, 3)
        print(f'{options[user_selection]} vs. {options[pc_selection]}')
        if user_selection in (pc_selection - 1, pc_selection + 2):
            print('User wins')
            score[0] += 1
        elif user_selection == pc_selection:
            print('Draw')
        else:
            print('PC Wins')
            score[1] += 1
        input('\n_____ ENTER TO PROCEED _____')


    winner = 'User' if score[0] == 3 else 'PC'
    print(f'\n{winner} won the match!')


play()

Hopefully you will find here something useful and new for your learning process.



来源:https://stackoverflow.com/questions/61905021/determining-winner-in-rock-paper-scissors-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!