这个游戏类似于,我小时候玩的剪刀石头布,也可以说基本一样吧。这个游戏非常有意思,大家有兴趣可以玩,源码附在下面:
import random,sys
print('ROCK,PAPER,SCISSORS')
wines = 0
losses = 0
ties = 0
playerMove = 0
computerMove = 0
while True:
print('%s Wines,%s Losses,%s Ties' % (wines, losses, ties))
while True:
print('Enter your move: (r)ock (p)aper (s)cissore or (q)uit')
playerMove = input()
if playerMove == 'q':
sys.exit()
if playerMove == 'r' or playerMove == 'p' or playerMove == 's':
break
print('Type one of r,p,s or q.')
if playerMove == 'r':
print('ROCK versus...')
elif playerMove == 'p':
print('PAPER versus...')
elif playerMove == 's':
print('SCISSORS versus...')
randomNumber = random.randint(1,3)
if randomNumber == 1:
computerMove = 'r'
print('ROCK')
if randomNumber == 2:
computerMove = 'p'
print('PAPER')
if randomNumber == 3:
computerMove = 's'
print('SCISSORS')
if playerMove == computerMove:
print('It is a tie!')
ties += 1
elif playerMove == 'r' and computerMove == 's':
print('You win!')
wines += 1
elif playerMove == 'p' and computerMove == 'r':
print('You win!')
wines += 1
elif playerMove == 's' and computerMove == 'p':
print('You win!')
wines += 1
elif playerMove == 'r' and computerMove == 'p':
print('You lose!')
losses += 1
elif playerMove == 'p' and computerMove == 's':
print('You lose!')
losses += 1
elif playerMove == 'S' and computerMove == 'r':
print('You lose!')
losses += 1
我们来解读一下整段代码。
import random,sys
print('ROCK,PAPER,SCISSORS')
wines = 0
losses = 0
ties = 0
playerMove = 0
computerMove = 0
首先,导入random和sys模块,为了后面调用random.randint()和sys.exit()函数。再设置三个变量来确定后面玩家获得的胜利、失败和平局。再定义playMove和computerMove两个变量,并赋初值。
while True:
print('%s Wines,%s Losses,%s Ties' % (wines, losses, ties))
while True:
print('Enter your move: (r)ock (p)aper (s)cissore or (q)uit')
playerMove = input()
if playerMove == 'q':
sys.exit()
if playerMove == 'r' or playerMove == 'p' or playerMove == 's':
break
print('Type one of r,p,s or q.')
该程序使用一个while循环里面再嵌套一个while循环,第一个循环是主循环,在每一次循环中玩家玩一次游戏。第二个循环是让玩家输入自己的游戏:r:石头;p:纸;s:剪刀;q:退出。
剩余代码会将玩家的选择显示在屏幕上,并且随机选择计算机的选择。random.randint()选择随机数。最后比较玩家与计算机的选择,将结果显示,然后增加wins,losses和ties的值。