python 高级码农成才之路

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

2021-01-28  本文已影响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)

上一篇 下一篇

猜你喜欢

热点阅读