![]() |
Rock paper Scissors - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: General (https://python-forum.io/forum-1.html) +--- Forum: Code Review (https://python-forum.io/forum-46.html) +--- Thread: Rock paper Scissors (/thread-32236.html) |
Rock paper Scissors - Milan - Jan-29-2021 Hello team, Any suggestion on how to improve my rps game before making a gui for it? from random import randint def startgame(): print( ''' What do you want to play: [0] Rock [1] Paper [2] Scissors ''') def inputValidation(userInput): while userInput not in [0, 1, 2]: print('Incorrect input, please insert a value between 0 and 2') userInput = int(input(prompt)) return userInput def result(ValidatedInput, computerMove): moves = {0:'Rock', 1:'Paper', 2:'Scissors'} print(f'You played: {moves[ValidatedInput]}\nComputer played: {moves[computerMove]}') w = 'You Win!' l = 'You Lose!' if ValidatedInput == computerMove: print("It's a draw") elif ValidatedInput == 0 and computerMove == 1: print(l) elif ValidatedInput == 0 and computerMove == 2: print(w) elif ValidatedInput == 1 and computerMove == 0: print(w) elif ValidatedInput == 1 and computerMove == 2: print(l) elif ValidatedInput == 2 and computerMove == 0: print(l) elif ValidatedInput == 2 and computerMove == 1: print(w) computerMove = randint(0, 2) prompt = '> ' startgame() userInput = int(input(prompt)) ValidatedInput = inputValidation(userInput) result(ValidatedInput, computerMove)Any thoughts are most welcome. RE: Rock paper Scissors - j.crater - Jan-31-2021 Hello, the code looks good to me. It is common with this kind of games to have a while loop and let player replay if he wants, instead of rerunning the program. But that is up to you. There are ways to shorten the part of code that checks for the winner. But in case of a simple game like RPS, the way you wrote it works fine and is readable. RE: Rock paper Scissors - Milan - Feb-01-2021 Thank you very much for your feed back (Jan-31-2021, 11:29 AM)j.crater Wrote: Hello, Done that: import sys from random import randint def startgame(): print( ''' What do you want to play: [0] Rock [1] Paper [2] Scissors [9] Quit ''') def inputValidation(userInput): while userInput not in [0, 1, 2, 9]: print('Incorrect input, please insert a value between 0 and 2') userInput = int(input(prompt)) return userInput def result(ValidatedInput, computerMove): moves = {0:'Rock', 1:'Paper', 2:'Scissors'} print(f'You played: {moves[ValidatedInput]}\nComputer played: {moves[computerMove]}') w = 'You Win!' l = 'You Lose!' if ValidatedInput == computerMove: print("It's a draw") elif ValidatedInput == 0 and computerMove == 1: print(l) elif ValidatedInput == 0 and computerMove == 2: print(w) elif ValidatedInput == 1 and computerMove == 0: print(w) elif ValidatedInput == 1 and computerMove == 2: print(l) elif ValidatedInput == 2 and computerMove == 0: print(l) elif ValidatedInput == 2 and computerMove == 1: print(w) prompt = '> ' c = True while c: computerMove = randint(0, 2) startgame() userInput = int(input(prompt)) if userInput == 9: sys.exit() ValidatedInput = inputValidation(userInput) result(ValidatedInput, computerMove) continue_input = input('Play again [y/n]? ').upper() while continue_input not in 'YyNn': print('Incorrect input, please type y or n') continue_input = input((prompt)) if continue_input == 'N': c = False |