曾经给一个小屁孩做的作业,放出来分享...
实现思路:
定义一个玩家类;实现获取用户的输入。
定义一个机器人类;实现机器人的输入。
定义一个裁判类;裁判判断双方胜负。
定义游戏桌面;实现游戏的启动和管理。
完整代码:
import random
#定义错误规则类,当玩家输入错误的值时需要触发这个。
class RulesError(Exception):pass
#动作集
ACTSET={1:'石头',2:'剪刀',3:'布'}
#输入状态标志
INPUT_STATE_MARK = True
STONE = 1 #定义石头
SCISSORS = 2 #剪刀
PAPER = 3 #bu
PLAYERWON = 1 #玩家胜利
ROBOTWON = 2 #机器人胜利
EQ = 0 #平局
#获取输入
def getInput():
while INPUT_STATE_MARK:
try:
inint=int(input('轮到你了:'))
if inint in [1,2,3]:
#用户输入1,2,3时返回输入值
return inint
else:
#错误的值,触发规则错误
raise RulesError()
except:
print('请遵守游戏规则!')
pass
#定义机器人类
class _robot:
def __init__(self,name='彩虹一号'):
#机器人名称
self.name=name
def getAct(self):
#机器人出手啦
return random.randint(1,3)
#定义玩家类
class _player:
def __init__(self):pass
def getAct(self):
#玩家出手啦
return getInput()
#定义裁判
class _judge:
def __int__(self,name='1号裁判'):
self.name=name
def ruling(self,robotact,playeract):
#裁判判定胜负!!!
if robotact==playeract:return EQ
if robotact==STONE and playeract==SCISSORS:return ROBOTWON
if robotact==STONE and playeract==PAPER:return PLAYERWON
if robotact==SCISSORS and playeract==STONE:return PLAYERWON
if robotact==SCISSORS and playeract==PAPER:return ROBOTWON
if robotact==PAPER and playeract==STONE:return ROBOTWON
if robotact==PAPER and playeract==SCISSORS:return PLAYERWON
#定义游戏
class _game:
def __init__(self,robot,player,judge):
self.robot=robot
self.player=player
self.judge=judge
def showGameInfo(self):
#打印游戏规则
print('不死不休猜拳小游戏')
print('-'*20)
print('游戏规则')
print('输入数字1表示石头,2表示剪刀,3表示布')
def gameTable(self):
#游戏桌面
roundnum=1
while True:
print('当前第%d回合.' % (roundnum))
robotact=self.robot.getAct()
print('机器人%s:我出 %s' %(self.robot.name,ACTSET[robotact]))
playeract=self.player.getAct()
print('你出了 %s' %(ACTSET[playeract]))
result=self.judge.ruling(robotact,playeract)
if result==EQ:
print('裁判:%s' % ('平局'))
elif result==ROBOTWON:
print('裁判:%s' % ('机器人获胜!'))
elif result==PLAYERWON:
print('裁判:%s' % ('你获胜了!'))
roundnum+=1
print('-'*20)
print('再来一局!')
def start(self):
#开始游戏
print('-'*20)
print('游戏开始!')
self.gameTable()
if __name__=='__main__':
robot=_robot()#实例化机器人
player=_player()#实例化玩家
judge=_judge()#实例化裁判
game=_game(robot,player,judge)#实例化游戏
game.showGameInfo()#打印游戏规则
game.start() #游戏开始