美文网首页python 高级码农成才之路
*禁白嫖*python-----面向对象编程2

*禁白嫖*python-----面向对象编程2

作者: 幼姿沫 | 来源:发表于2021-01-28 23:13 被阅读0次

    禁白嫖的含义就是

     尊重我的劳动成果  点赞 打赏 转发 谢谢您各位捧场

    烤地瓜 定义属性和方法

    class SweetPotato:

    #定义地瓜的属性  cookLevel * cookString * condiments

        def __init__(self):

            self.cookLevel=0

            self.cookString='烤的红薯是生的'

            self.condiments=[]

    #定义魔法方法 将输出格式进行美化 直接输出类名即可,不需要调用方法或者属性

        def __str__(self):

            msg='红薯'+self.cookString

            if len(self.condiments)>0:

                msg=msg+'('

                for  tempin self.condiments:

                    msg=msg+temp+','

                msg=msg.strip(',')

                msg=msg+')'

            return msg

    #定义烤的方法 参数为时间 判断一下等级相对应的程度

        def cook(self,time):

           self.cookLevel+=time

            if self.cookLevel>=8:

                self.cookString='烤成灰了'

            elif self.cookLevel>=5:

                self.cookString='已经烤熟了'

            elif self.cookLevel>=3:

                self.cookString='烤的半生不熟'

            else:

                self.cookString='红薯烤的是生的'

        #给红薯添加酱料

        def add_condiments(self,condiments):

            self.condiments.append(condiments)

    #实例化类对象 并且进行调用相对应的属性和方法

    mySweetPotato=SweetPotato()

    #红薯的初始值 直接进行调用并且进行输出

    print('-----准备好了一个红薯,还没开始烤-----')

    print('红薯烤的等级*',mySweetPotato.cookLevel,'烤红薯的状态*',mySweetPotato.cookString,'红薯的蘸酱*',mySweetPotato.condiments)

    #开始烤红薯 规定烤的时间 判断一下红薯的生熟程度

    print('-----接下来就要开始烤红薯了-----')

    print('----- 将红薯开始烤4分钟 -----')

    mySweetPotato.cook(4)

    print('红薯烤的等级*',mySweetPotato.cookLevel,'烤红薯的状态*',mySweetPotato.cookString,'红薯的蘸酱*',mySweetPotato.condiments)

    print('----- 红薯还没有熟,继续烤红薯 -----')

    print('----- 继续烤红薯3分钟 -----')

    mySweetPotato.cook(3)

    print('-----开始往红薯上沾酱料 -----')

    print('-----往红薯上蘸蜂蜜酱 -----')

    mySweetPotato.add_condiments('蜂蜜酱')

    #因为__str__为魔法方法 直接输出类名即可

    print(mySweetPotato)

    print('----- 将红薯再次烘烤5分钟 -----')

    mySweetPotato.cook(5)

    print('----- 在红薯上蘸上芥末酱 -----')

    mySweetPotato.add_condiments('芥末酱')

    print(mySweetPotato)

    装修房子 存入物件

    #实例化两个类对象 房间和床 房间的面积和床的面积进行比较如果小于的话可以直接放入床品类

    #注 * 如果两个对象之间有一定的关系,那么这个对象一定是另外一个对象的属性 后者对象也同要有属性和方法

    class Room:

        def __init__(self,area):

            self.area=area

            self.containsItem=[]

        def __str__(self):

            msg='房间的面积为*'+str(self.area)

            if len(self.containsItem) >0:

                msg=msg+'容纳的物品有*'

                for itemin self.containsItem:

                    msg=msg+item.getName()+','

                msg=msg.strip(', ')

            return msg

        def accommodateItem(self,item):

            needArea =item.getUsedArea()

            if self.area > needArea:

                self.containsItem.append(item)

                self.area -= needArea

                print('ok,该物件已经摆放到房间中')

            else:

                print('房间面积为*%d,但是该物件的面积为*%d ' % (self.area,needArea))

    class Bed:

        def __init__(self,area,name='bed'):

            self.area=area

            self.name=name

        def __str__(self):

            msg='床的面积为*'+str(self.area)

            return msg

        def getUsedArea(self):

            return self.area

        def getName(self):

            return self.name

    room=Room(100)

    print(room)

    bed=Bed(20)

    print(bed)

    room.accommodateItem(bed)

    print(room)

    bed2=Bed(30,'席梦思')

    room.accommodateItem(bed2)

    print(bed2,room)

    射击类游戏创建

    '''

    创建的类      属性                              方法

    人    姓名  血量  持有的枪        安弹夹 安子弹 持枪 开枪(射子弹)

    敌人  姓名  血量  持有的枪

    枪    弹夹                        连接弹夹 射子弹

    弹夹  当前的子弹数量 容量          保存子弹 射出子弹

    子弹  杀伤力                      伤害敌人 (让敌人掉血量)

    '''

    class Human:

        def __init__(self,name):

            self.name=name

            self.blood=100

            self.qiang=None

        def __str__(self):

            return self.name+'剩余血量为*'+str(self.blood)

        def andanjia(self,danjia,qiang):

            qiang.lianjiedanjia(danjia)

        def anzidan(self,danjia,zidan):

            danjia.anzidan(zidan)

        def naqiang(self,qiang):

            self.qiang=qiang

         def kaiqiang(self,diren):

            self.qiang.kaiqiang(diren)

        def loseBlood(self,killPower):

            self.blood -=killPower

    class Qiang:

        def __init__(self):

            self.danjia=None

        def __str__(self):

            if self.danjia:

                return '枪当前有弹夹'

            else:

                return '枪当前没有弹夹'

        def lianjiedanjia(self,danjia):

            if not self.danjia:

                self.danjia=danjia

        def kaiqiang(self,diren):

            zidan=self.danjia.shezidan()

            if zidan:

                zidan.shanghai(diren)

            else:

                print('没有子弹了,放了空枪')

    class Danjia:

        def __init__(self,rongliang):

            self.rongliang=rongliang

            self.rongnaList=[]

        def __str__(self):

            return '弹夹当前的子弹数量为*' +str(len(self.rongnaList))+'/'+str(self.rongliang)

        def anzidan(self,zidan):

            if len(self.rongnaList) <self.rongliang:

                self.rongnaList.append(zidan)

        def shezidan(self):

            if len(self.rongnaList) >0:

                zidan=self.rongnaList[-1]

                self.rongnaList.pop()

                 return zidan

            else:

                    return None

    class ZiDan:

        def __init__(self,shashangli):

            self.shashangli=shashangli

        def shanghai(self,diren):

            diren.loseBlood(self.shashangli)

    humen=Human('wangsir')

    danjia=Danjia(20)

    print(danjia)

    qiang=Qiang()

    print(qiang)

    i=0

    while i<=5:

    zidan=ZiDan(5)

    humen.anzidan(danjia,zidan)

    i+=1

    print(danjia)

    humen.andanjia(danjia,qiang)

    print(qiang)

    diren=Human('engemy')

    print(diren)

    humen.naqiang(qiang)

    humen.kaiqiang(diren)

    print(diren)

    print(danjia)

    humen.kaiqiang(diren)

    print(diren)

    print(danjia)

    相关文章

      网友评论

        本文标题:*禁白嫖*python-----面向对象编程2

        本文链接:https://www.haomeiwen.com/subject/fqmzzktx.html