Python实现猜拳小游戏

曾经给一个小屁孩做的作业,放出来分享...

实现思路:

  • 定义一个玩家类;实现获取用户的输入。
  • 定义一个机器人类;实现机器人的输入。
  • 定义一个裁判类;裁判判断双方胜负。
  • 定义游戏桌面;实现游戏的启动和管理。

完整代码:

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() #游戏开始

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/557.html

分类: 计算机技术
推荐阅读:
什么是可打印字符? 可打印字符是指在文本中可以显示和输出的字符,包括字母、数字、标点符号和一些特殊符号。根据ASCII编码标准,ASCII码范围内的可打印字符的值为 32(空格)到 126(波浪号)。
Rust实现字符串MD5加密 本文将使用Rust语言rust-crypto库实现字符串的MD5加密;
Microsoft Office 禁用自动更新方法 近日,作者发现 Microsoft Office会偷偷摸摸的自动安装更新,这点是我无法忍受的,因为像这样的大型软件,随随便便更新以下就是几百兆的更新包,不仅占用网络资源,而且对我心爱的固态硬盘极为不利,而且这些软件更新推送很频繁;
C语言isgraph()函数:判断字符是否可打印(且不是空格) isgraph()是C语言标准库中的一个函数,用于检查一个字符是否可以打印且不是空格字符;
没有main()函数的C语言程序 有两种方法可以不添加main()函数来运行C语言程序,第一种用#define预处理指令,第二种是使用-nostartfiles编译选项;
Python @classmethod装饰器 在 Python 中,@classmethod 是一个装饰器,用于将一个普通方法转换为类方法。装饰器是一种语法糖,它可以修改已有函数的行为而不修改其定义。@classmethod 装饰器通常用于在类中定义类方法。