Apr-23-2018, 09:30 PM
Hi, all. I'm super new to python and to OOP and was hoping for some help. I built a simple RPS game and wanted to include a check for user entry against a dictionary. If entry is invalid a simple print command asking for another entry and if the entry was valid, break and move onto the next line. The problem is when I tried within an existing loop, the break would skip additional steps. I couldn't figure it out so was hoping a kind stranger could help out this poor lost soul o_0.
My original code (without the horrible attempt at QC) is below. Could someone give me a hand as to how to have the choice input on line 51 QC'd against the user_legend dictionary on line 57? Thanks in advance!
My original code (without the horrible attempt at QC) is below. Could someone give me a hand as to how to have the choice input on line 51 QC'd against the user_legend dictionary on line 57? Thanks in advance!
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 89 90 91 92 93 94 95 96 |
#Version one with no QC check for rock, paper, scissor user entry import sys import random import time import math #Ask for user name and greet user user = input ( 'Hi, what\'s your name? ' ) #Intro yourself print () print ( 'Hello,' ,user + '. I am RPS-Bot, and I am here to KILL you.' ) time.sleep( 1 ) print () print ( 'Nah, I\'m just messin...' ) time.sleep( 1.5 ) print ( 'Seriously though, if you want to ' ,end = "") print ( 'live then play Rock, Paper, Scissors' ) time.sleep( 1.5 ) print () #print("Do you want to play until you're bored of a 'best of' match?") #choice = input("Type 'U' for unlimited and 'B' for best of") while 1 = = 1 : best = input ( 'How many "best of games" do you want to play? ' ) try : int (best) break except ValueError: print (best, "??? I need a number. Humans, amirite?" ) print () continue win_number = math.ceil( int (best) / 2 ) #Ask for user input for rock paper scissor. Can accept single letter or uppercase and lowercase full spelling print () print ( "Ok, best of" ,best + ". First one to" , str (win_number) + " wins!" ) time.sleep( 1 ) print () print ( "Pick Rock, Paper or Scissors \n" "(R, P, S if you're lazy.)" ) time.sleep( 0.5 ) #Set Scores to Zero rps_score = 0 user_score = 0 #start RPS loop while (user_score < win_number and rps_score < win_number): print () choice = input ( "Whats your throw? " ) #generate RPS-bot throw rps = random.randint( 1 , 3 ) rpslegend = { 1 : "Rock" , 2 : "Paper" , 3 : "Scissors" } # create RPS legend userlegend = { 'rock' : 'Rock' , 'r' : 'Rock' , 'paper' : 'Paper' , 'p' : 'Paper' , 's' : 'Scissors' , 'scissors' : 'Scissors' } # generate game possibilities possible_outcomes = { "Rock : Rock" : "Tie, shoot again!" , 'Rock : Scissors' : "You win!" , 'Rock : Paper' : "You lose, sucka!" , "Paper : Paper" : "Tie, shoot again!" , 'Paper : Scissors' : "You lose, sucka!" , 'Paper : Rock' : "You win!" , 'Scissors : Scissors' : "Tie, shoot again!" , "Scissors : Rock" : "You lose, sucka!" , "Scissors : Paper" : "You win!" } game = userlegend[choice] + ' : ' + rpslegend[rps] #indicate winner print (game) time.sleep( 0.25 ) print (possible_outcomes[game]) #tally score if (possible_outcomes[game]) = = "You win!" : user_score + = 1 if (possible_outcomes[game]) = = "You lose, sucka!" : rps_score + = 1 #print score time.sleep( 0.5 ) print (user + ':' , str (user_score) + '. RPS-Bot: ' , str (rps_score)) #if tie, start loop over if (possible_outcomes[game]) = = 'Tie, shoot again!' : time.sleep(. 5 ) continue time.sleep(. 75 ) print () if user_score = = win_number: print ( 'I lost??! NOW YOU MUST DIEEE!' ) else : print ( 'I won, RPS-Bot is the GREATEST OF ALL TIIIIIIIME!' ) |