Test
Test

Reputation: 567

Writing a simple "Rock Paper Scissors" game bot

This is what I came up with for my rock-paper-scissors game:

import random 

from time import sleep 

print "Please select: " 
print "1  Rock" 
print "2  Paper" 
print "3  Scissors" 

player = input ("Choose from 1-3: ") 

if player == 1: 
    print "You choose Rock" 
    sleep (2) 
    print "CPU chooses Paper" 
    sleep (.5) 
    print "You lose, and you will never win!" 

elif player == 2: 
    print "You choose Paper" 
    sleep (2) 
    print "CPU chooses Scissors" 
    sleep (.5) 
    print "You lose, and you will never win!" 

else: 
    print "You choose Scissors" 
    sleep (2) 
    print "CPU chooses Rock" 
    sleep (.5) 
    print "You lose, and you will never win!"

and what I want the program to do is to RANDOMLY choose 1 out of the three options (rock paper scissors) no matter what the user inputs. How can I accomplish this?

Upvotes: 7

Views: 18488

Answers (6)

alfie redgrave
alfie redgrave

Reputation: 1

Try this instead:

    print()
    humanGuess = input("rock, paper or scissors?: ")
    import random
    misc =(random.randint(1,3))
    if misc == 1 and humanGuess == "paper":
        print ("paper, [draw] ")
    elif misc == 2 and humanGuess == "paper":
        print ("rock, [you win] ")
    elif misc == 3 and humanGuess == "paper":
        print ("scissors, [I win] ")
    elif misc == 1 and humanGuess == "rock":
        print ("paper, [I win] ")
    elif misc == 2 and humanGuess == "rock":
        print ("rock, [draw] ")
    elif misc == 3 and humanGuess == "rock":
        print ("scissors, [you win] ")
    elif misc == 1 and humanGuess == "scissors":
        print ("paper, [you win] ")
    elif misc == 2 and humanGuess == "scissors":
        print ("rock, [I won] ")
    elif misc == 3 and humanGuess == "scissors":
        print ("scissors, [draw] ")
    else:
        print ("not recognised")

I think this works

Upvotes: -6

weallneedmoresunshine
weallneedmoresunshine

Reputation: 11

Not an expert, but here is what I have thus far, using a __name__ == '__main__' statement may be helpful if you need the computer to generate an answer and keep it clean and concise.

No solution given.

import random

def is_tie(move1, move2):

'''FIX! (parameter types) -> return type

    Return True if move1 and move2 are the same.'''

    if move1 == move2:
        return True

def is_win(move1, move2):
    '''FIX! (parameter types) -> return type

    Return True iff move1 beats move2 in rock-paper-scissors.'''

    choice1 = scissor > paper,
    choice2 = paper > rock,
    choice3 = rock > scissor   

    return choice1 or choice2 or choice3

    if move1 > move2:

    return True

if __name__ == '__main__':

    # Get a move from the user.
    print "Rock, Paper, Scissor",    
    move1 = raw_input("What is your move? ")

    # Now, to generate a random move for the computer. Tricky... Here are some examples and suggestions, no solution given.

    if move2(random.randint(1,3)) == 1:
        print "paper"
    elif move2(random.randint(1,3)) == 2:
        print "rock"
    else:
        print "scissor"

    # Evaluate who wins and then print out an appropriate message.    
    #if solution(move1, move2):
    #   print 
    #if move2 > move1:
    #    usr_fail = (raw_input('I win!!'))
    #    print usr_fail
    #if move2 < move1:
    #    usr_win  = (raw_input('Damn it!'))
    #    print usr_win
    #if move2 == move1
    #usr_draw = (raw_input('Draw!!!')
    #    print usr_draw

Upvotes: 1

Carlitos
Carlitos

Reputation: 41

use dictionaries

loseDic = { 'rock'     : 'paper',
            'paper'    : 'scissors',
            'scissors' : 'rock',
}

## Get the human move, chose a random move, bla bla bla...

if robotMove == humanMove:
    tie()
elif humanMove == loseDic[robotMove]:
    lose()
else:
    win()

Upvotes: 4

gumuz
gumuz

Reputation: 295

import random

ROCK, PAPER, SCISSORS = 1, 2, 3
names = 'ROCK', 'PAPER', 'SCISSORS'

def beats(a, b):
    if (a,b) in ((ROCK, PAPER), (PAPER, SCISSORS), (SCISSORS, ROCK)): 
        return False

    return True


print "Please select: " 
print "1  Rock" 
print "2  Paper" 
print "3  Scissors" 

player = int(input ("Choose from 1-3: "))
cpu = random.choice((ROCK, PAPER, SCISSORS))

if cpu != player:
    if beats(player, cpu):
        print "player won"
    else:
        print "cpu won"
else:
    print "tie!"

print names[player-1], "vs", names[cpu-1]

Upvotes: 7

PEZ
PEZ

Reputation: 17004

Inspired by gumuz:

import random

WEAPONS = 'Rock', 'Paper', 'Scissors'

for i in range(0, 3):
  print "%d %s" % (i + 1, WEAPONS[i])

player = int(input ("Choose from 1-3: ")) - 1
cpu = random.choice(range(0, 3))

print "%s vs %s" % (WEAPONS[player], WEAPONS[cpu])
if cpu != player:
  if (player - cpu) % 3 < (cpu - player) % 3:
    print "Player wins"
  else:
    print "CPU wins"
else:
  print "tie!"

Upvotes: 4

sykloid
sykloid

Reputation: 101346

Well, you've already imported the random module, that's a start.

Try the random.choice function.

>>> from random import choice
>>> cpu_choice = choice(('rock', 'paper', 'scissors'))

Upvotes: 29

Related Questions