python面向对象——烤土豆,开枪案例

烤土豆应用: 示例属性如下:
cookedLevel : 这是数字;0~3表示还是生的,超过3表示半生不熟,超过5表示已 经烤好了,超过8表示已经烤成木炭了!我们的地瓜开始时时生的
cookedString : 这是字符串;描述地瓜的生熟程度 condiments : 这是地瓜的配料列表,比如番茄酱、芥末酱等


示例方法如下:
cook() : 把地瓜烤一段时间 addCondiments() : 给地瓜添加配料 __init__() : 设置默认的属性 __str__() : 让print的结果看起来更好一些

class Potato:
	def __init__(self):
		#烤的等级
		self.cookLevel=0
		#烤的程度
		self.cookString="生的!"
		#佐料
		self.condiments=[]
	def cook(self,time):
		if time<0:
			print("有问题")
		else:
			self.cookLevel+=time
			if self.cookLevel<=3:
				self.cookString="省的!"
			elif self.cookLevel<=5:
				self.cookString="半生不熟!"
			elif self.cookLevel<=8:
				self.cookString="熟了!"
			else:
				self.cookString="烤焦了!"
		def addCondiments(self,condiment):
			self.condiments.append(condiment)
		def __str__(self):
			s="等级: %s,程度:%s"%(selfcookLeval,selfcookstring)
			ss=",佐料:"
	        if len(self.condiments)>0:
	        	
	        	for condiment in condiments:
	        		ss+=condiment+""
	        else:
	        	ss+="无佐料"

			return s+ss
p=Potato()
print(p)

print("烤1分钟")
p.print(2)
print(p)

print("烤4分钟")
p.print(4)
p.addCondiments("孜然")
print(p)

开枪案例:

'''
人
   姓名   血量  枪
   装子弹(弹夹,子弹)
        弹夹.保存(子弹)
    装弹夹(枪,弹夹)
      枪.连接(弹夹)
    拿枪(枪)
       自己的枪=枪
    开枪(敌人)
       枪.射子弹(敌人)
    掉血(杀伤力)
       血量-=杀伤力
枪
   弹夹
   连接(弹夹)
   射子弹(敌人)
       子弹=弹夹.取子弹()
       子弹.伤害敌人(敌人)
弹夹
   总容量
   当前容量
   取子弹()
        当前容量-1
        return 子弹
    保存子弹(子弹)
       当前容量+1
子弹
   杀伤力
   伤害敌人(敌人)
       敌人.掉血(杀伤力)

'''
class Ren:
	def __init__(self,name):
	    self.name=name
	    self.xue=100
	    self.qiang=None
	#安子弹:弹夹 子弹
    def anzidan(self,danjia,zidan):
        danjia.baocunzidan(zidan)
    #安弹夹:枪 弹夹
    def andanjia(self,qiang,danjia):
    	qiang.liandanjia(danjia)
    #拿枪:枪
    def naqiang(self,qiang):
        self.qiang=qiang
    def kaiqiang(self,animy):
    	self.qiang.shezidan(animy)
    def diaoxue(self,shashangli):
    	self.xue-=shashangli

    def __str__(self):
    	s="姓名: %s,血量: %s"%(self.name,self.xue)
    	if self.qiang!=None:
    		s+=",是否有枪:有"
    	else:
    		s+=",是否有枪:无"
        return s

class Qiang:
	def __init__(self):
		self.danjia=None

	def lianjiedanjia(self,danjia):
		self.danjia=danjia
	def shezidan(self,animy):
		if self.danjia.rongliangList>0:
			zidan=self.danjia.chuzidan()
			
			zidan.shanghai(animy)
		else:
			print("没子弹了!快快装弹")
	def __str__(self):
		if self.danjia!=None:
			return "枪有弹夹"
	    else:
	    	return "没有子弹"

class ZiDan:
	def __init__(self,shashangli):
		self.shashangli=shashangli
    def shanghai(self,animy):
    	animy.diaoxue(self.shashangli)
class DanJia:
	def __init__(self,rongliang):
		#弹夹的容量
		self.rongliang=rongliang
		#弹夹的空间
		self.rongliangList=[]
	def baocunzidan(self,zidan):
		if len(self.rongliangList)>=self.rongliang:
		print("弹夹已满")
	    else:
	    	self.rongliangList.append(zidan)
	def chuzidan(self):
		zidan=self.rongliangList[-1]
		self.rongliangList.pop()
		return zidan
	def __str__(self):
		s="当前子弹数量: %s/%s"(len(self.rongliangList),self.rongliang)
        return s
#Begin....................................................
laozhang=Ren("老张")
print(laozhang)

danjia=DanJia(30)
print(danjia)


#给弹夹装5颗子弹
for i in range(5):
    zidan=ZiDan(8)
	laozhang.anzidan(danjia,zidan)
print(danjia)

qiang=Qiang()
print(qiang)

laozhang.andanjia(qiang,danjia)
print(laozhang)
print(qiang)

laozhang.naqiang(qiang)
print(laozhang)

laowang=Ren("老王")
for i in range(5):
	print("老张开枪了")
	laozhang.kaiqiang(laowang)
	print(danjia)
	print(laowang)


 

猜你喜欢

转载自blog.csdn.net/y805805/article/details/84554043
今日推荐