写一个简单的“岩石剪刀”游戏机器人

时间:2009-01-17 14:50:12

标签: python

这就是我为摇滚剪刀游戏提出的建议:

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!"

我希望程序做的是随时选择三个选项中的一个(摇滚剪刀),无论用户输入什么。我怎么能做到这一点?

7 个答案:

答案 0 :(得分:29)

好吧,你已经导入了随机模块,这是一个开始。

尝试random.choice功能。

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

答案 1 :(得分:7)

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]

答案 2 :(得分:4)

受到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!"

答案 3 :(得分:4)

使用词典

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()

答案 4 :(得分:1)

不是专家,但这是我到目前为止所使用的__name__ == '__main__'语句可能会有所帮助,如果您需要计算机来生成答案并保持其简洁明了。

没有解决方案。

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

答案 5 :(得分:0)

如果有人喜欢玩“原始学校操场规则”,则以3胜1获胜。

import random

x = ["Rock", "Paper", "Scissors"]

computer_score = 0
my_score = 0

z = ""
y = ""

while computer_score <= 3 and my_score <= 3:
    z = input("Rock, Paper or Scissors: ")
    y = random.choice(x)
    print(y)
    if z == "Rock" and y == "Scissors":
        my_score += 1
    elif z == "Paper" and y == "Rock":
        my_score += 1
    elif z == "Scissors" and y == "Paper":
        my_score += 1
    elif z == y:
        my_score = my_score
        computer_score = computer_score
    else:
        computer_score += 1
    print("Computer: {}".format(computer_score))
    print("Me: {}".format(my_score))

    if computer_score == 3:
        print("The computer wins!")
        break
    elif my_score == 3:
        print("You win!")
        break

答案 6 :(得分:-6)

尝试以下方法:

    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")

我认为这可行