python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

python基础系列:
python自学篇一[ Anaconda3安装 ]
python自学篇二[ pycharm安装及使用 ]
python自学篇三[ 判断语句if的使用 ]
python自学篇四[ 基本数据类型和字符串常用处理 ]
python自学篇五[ 列表 ]
python自学篇六[ 元组 ]
python自学篇七[ 字典+深拷贝与浅拷贝 ]描述
python自学篇八[ 循环:while+for+pass+range()+推导式 ]
python自学篇九[ 函数(一):参数+对象 ]
python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器 ]
python自学篇九[ 函数(三):变量作用域+ATM+5个小练习 ]
python自学篇九[ 函数(四):递归函数+匿名函数+内置函数+高阶函数 ]
python自学篇十[ 面向对象 (一) :面向对象概念+定义类+练习一]
python自学篇十[ 面向对象 (二) :继承+多继承+类属性+实例属性]
python自学篇十[ 面向对象 (三) :访问限制+类方法+静态方法]
python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python自学篇十一[ 模块简介+模块制作+dir()函数+标准模块+包]
python自学篇十二[ 文件:打开+读取+写入+3个习题]

练习:亡者农药小游戏

1、创建三个游戏人物,分别是:
属性:
名字:name,定位:category,血量:Output技能:Skill
英雄:
铠,战士,血量:1000 技能:极刃风暴
王昭君,法师 ,血量:1000 技能:凛冬将至
阿轲,刺客,血量:1000 技能:瞬华

2、游戏场景,分别:

偷红buff,释放技能偷到红buff消耗血量300
solo战斗,一血,消耗血量500
补血,加血200

  • 完整代码:
#-*- conding:utf-8 -*-
class hero():

    #定义属性
    def __init__(self,name,category,skill,output=1000,score = 0):
        self.name = name
        self.category = category
        self.skill = skill
        self.output = output
        self.score = score

    #战斗场景1,偷红BUFF
    def red_buff(self):
        self.output -= 300
        print('%s%s到对面野区偷红BUFF,消耗血量300'%(self.category,self.name))

    #战斗场景2solo战斗
    def solo(self,n=1):
        self.output -= 500
        if self.output < 0:
            print('%s%s,送了一个人头,血染王者峡谷'%(self.category,self.name))
        else:
            if self.score == 0:
                self.score += n
                print('%s%s solo战斗拿到一血,消耗血量500'%(self.category,self.name))
            else:
                self.score += n
                print('%s%s solo战斗拿收割%d个人头,消耗血量500'%(self.category,self.name,n))


    #场景三,加血
    def add_xue(self):
        self.output += 200
        print('%s%s被辅助及时奶了一口,加血200'%(self.category,self.name))


    #查看英雄相惜信息
    def getInfo(self):
        if self.output <= 0:
            print('%s%s,正在复活,拿到%d个人头'%(self.category,self.name,self.score))

        else:
            print('%s%s超神啦!血量还有%d,拿到%d个人头'%(self.category,self.name,self.output,self.score))


#实例化对象
kai = hero('铠','战士','极刃风暴')

#操作
kai.red_buff()#打红buff
kai.getInfo()#查看英雄信息
kai.solo()#单挑杀人
kai.getInfo()#查看英雄信息
kai.add_xue()#奶妈加血
kai.getInfo()#查看英雄信息
kai.solo()#单挑杀人
kai.getInfo()#查看英雄信息

模拟一个简单的银行进行业务办理的类

类:
创建一个银行类
属性:
一个属于银行的类属性
用来存储所用银行的开户信息,包含卡号、密码、用户名、余额
(外界不能随意访问和修改。开户时要进行卡号验证,查看卡号是否已经存在)

每个对象拥有
    卡号、密码、用户名、余额
    (外界不能随意访问和更改)

方法:
银行类拥有
查看本银行的开户总数
查看所有用户的个人信息(包含卡号、密码、用户名、余额)
每个对象拥有
实例化对象的时候传入相关参数
初始化对象及类属性
取钱(需要卡号和密码验证)
通过验证卡号和密码对个人的余额进行操作,如果取钱大于余额,返回余额不足
存钱(需要卡号和密码验证)
通过验证卡号和密码对个人的余额进行操作,返回操作成功
查看个人详细信息(需要卡号密码验证)
返回个人的卡号,用户名,余额信息

  • 完整代码:
class Bank():
    #一个属于银行的类属性
    __Users = {}


    #每个对象拥有 卡号、密码、用户名、余额
    def __init__(self,CradId,pwd,name,balance):
        if CradId not in Bank.__Users:
            Bank.__Users[CradId] = {'pwd':pwd,'Username':name,'Balance':balance}
            self.__CradId = CradId
            self.__pwd = pwd
            self.__name = name
            self.__balance = balance


    #查看本银行的开户总数
    @classmethod
    def nums(cls):
        print('当前用户数:%d'%(len(cls.__Users)))


    #查看所有用户的个人信息(包含卡号、密码、用户名、余额)
    @classmethod
    def get_Users(cls):
        for key,val in cls.__Users.items():
            print('卡号:%s \n 用户名:%s \n密码:%d \n 余额:%d'%(key,val['Username'],val['pwd'],val['Balance']))
            print()

    #验证方法
    @staticmethod
    def check_User(CradId,pwd):
        if (CradId in Bank.__Users) and (pwd == Bank.__Users[CradId]['pwd'] ):
            return True
        else:
            return False
    #验证金额
    @staticmethod
    def check_money(money):
        if isinstance(money,int):
            return True
        else:
            return False

    # 取钱(需要卡号和密码验证)
    def q_money(self,CradId,pwd,money):
        if Bank.check_User(CradId,pwd):
            #开始取钱
            if Bank.check_money(money):
                if Bank.__Users[CradId]['Balance'] >= money:
                    Bank.__Users[CradId]['Balance'] -= money
                    print('当前卡号%s,当前取款金额%d,当前余额%d'%(CradId,money,Bank.__Users[CradId]['Balance']))
                else:
                    print('余额不足')
            else:
                print('您输入的金额有误')
        else:
            print('卡号或者密码有误')

    def c_money(self,CradId,pwd,money):
        if Bank.check_User(CradId,pwd):
            #开始取钱
            if Bank.check_money(money):
                Bank.__Users[CradId]['Balance'] += money
                print('当前卡号%s,当前存款金额%d,当前余额%d'%(CradId,money,Bank.__Users[CradId]['Balance']))
            else:
                print('您输入的金额有误')
        else:
            print('卡号或者密码有误')

    #查看个人详细信息(需要卡号密码验证)
    def getInfo(self,CradId,pwd):
        if Bank.check_User(CradId, pwd):
            print('当前卡号%s,当前用户名%s,当前余额%d' % (CradId, Bank.__Users[CradId]['Username'], Bank.__Users[CradId]['Balance']))
        else:
            print('卡号或者密码有误')


joe = Bank('1001',111111,'joe',100)
joe2 = Bank('1001',111111,'joe',100)
Bank.nums()
print('_'*50)
Bank.get_Users()
print('_'*50)
joe.c_money('1001',111111,500)
print('_'*50)
joe.q_money('1001',111111,300)
print('_'*50)
joe.getInfo('1001',111111)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章