• python的类/方法引用---人机石头剪刀布游戏


    import random
    #定义游戏玩家的类
    class Players:
        def __init__(self):
            self.fist=0   #初始化值(方法)
            self.score=0  #初始化值(方法)
        #玩家出拳
        def show_player_fist(self):
            self.fist=int(input('玩家出拳(1.剪刀/2.石头/3.布):'))
        #电脑出拳
        def show_computer_fist(self):
            self.fist=random.randint(1,3)
    #调用玩家对象和出拳的结果
    p1=Players()
    #p1.show_player_fist()
    #调用电脑对象和出拳的结果
    p2=Players()
    #p2.show_computer_fist()
    
    #定义游戏过程的类
    class Game:
        count=5
        def __init__(self):
            self.p1=Players() #把调用的玩家对象和出拳的结果 重新赋值给游戏过程中玩家的实例对象
            self.p2=Players() #把调用的电脑对象和出拳的结果 重新赋值给游戏过程中电脑的实例对象
        #单局判断玩家和电脑的出拳顺序规则,判定结果是哪方胜出
        '''
        玩家胜出:                  |     玩家胜出
        玩家出拳   VS     电脑出拳   |    玩家出拳   VS     电脑出拳  
        1.剪刀            3.布     |    1.剪刀            2.石头
        2.石头            1.剪刀   |    2.石头            3.布
        3.布              2.石头   |  3.布              1.剪刀
        '''
        def  result(self):
            i=0
            j=0
            x=0
            if self.p1.fist==1 and self.p2.fist==3 \
                or self.p1.fist==2 and self.p2.fist==1 \
                or self.p1.fist==3 and self.p2.fist==2:
                self.p1.score+=10
                i=i+1   #统计玩家赢的次数
                print(f'玩家胜利{i}次:积分为{self.p1.score}')
            elif self.p1.fist==self.p2.fist:
                x=x+1   #统计双方平局的次数
                print(f'双方玩家平局{x}次')
            else:
                self.p2.score += 10
                j=j+1   #统计电脑平局的次数
                print(f'电脑胜利{j}次:积分为{self.p2.score}')
         #定义游戏开始出拳
        def start_game(self):
            while Game.count>0:
                self.p1.show_player_fist()   #玩家出拳
                self.p2.show_computer_fist()   #电脑出拳
                self.result()   #单局出拳结果判断
                Game.count-=1
    
    if __name__ == '__main__':
        st=Game()
        st.start_game()
    
  • 相关阅读:
    Python数据分析11——Seaborn绘图
    源码安装MAVROS
    Java 创建线程的方法
    如何搭建一个vue项目(完整步骤)
    C#/.NET/.NET Core优秀项目框架推荐
    网络基础(day3)建议在电脑端注册登陆观看!!!
    双动子大理石高速直线模组在检测设备中的应用
    Java刷题面试系列习题(一)
    MySQL学习笔记(十四)索引失效有哪些情况?
    关于js_事件委托(代理)的介绍和简单使用
  • 原文地址:https://blog.csdn.net/liuaoxiang/article/details/126416229