题目
(一)
通过继承实现一台可灭菌的洗衣机
(二)
修改刚才解析的游戏,为精灵添加能量,并每次相遇时各自损失一定的能量。耗尽后游戏结束。
答案
(一)
class Washer:
company = "Le Xi"
def __init__(self, water=10, scour=2):
self._water = water
self.scour = scour
@staticmethod
def spins_ml(spins):
return spins * 0.4
@classmethod
def get_washer(cls, water, scour):
return cls(water, cls.spins_ml(scour))
@property
def water(self):
return self._water
@water.setter
def water(self, water):
if 0 < water <=500:
self._water = water
else:
print("set Failure!")
def set_scour(self, scour):
self.scour = scour
def add_water(self):
print("Add water:",self.water)
def add_scour(self):
print("Add scour:",self.scour)
def start_wash(self):
self.add_water()
self.add_scour()
print("Start wash...")
class DisinfaWasher(Washer):
def sterilize(self):
print("sterilize clothes...")
(二)
import random
class Sprite:
step = [-2, 2, -3, 3]
def __init__(self, gm, point=None, energy=10):
self.gm = gm
if point is None:
self.point = random.randint(0,20)
else:
self.point = point
self.energy = energy # 能量
def jump(self):
astep = random.choice(Sprite.step)
if 0 <= self.point + astep <=20:
self.point += astep
def deterio(self): # 能量损耗
self.energy -= 1
class Ant(Sprite):
def __init__(self, gm, point=None, energy=10):
super().__init__(gm, point, energy)
self.gm.set_point("ant", self.point)
def jump(self):
super().jump()
self.gm.set_point("ant", self.point)
class Worm(Sprite):
def __init__(self, gm, point=None, energy=10):
super().__init__(gm, point, energy)
self.gm.set_point("worm", self.point)
def jump(self):
super().jump()
self.gm.set_point("worm", self.point)
class GameMap:
def __init__(self):
self.ant_point = None
self.worm_point = None
def catched(self):
print("ant:", self.ant_point, "worm:", self.worm_point)
if self.ant_point is not None and self.worm_point is not None \
and self.ant_point == self.worm_point:
return True
def set_point(self,src,point):
if src == "ant":
self.ant_point = point
if src == "worm":
self.worm_point = point
测试
(一)
if __name__ == "__main__":
a = DisinfaWasher(13,14)
a.start_wash() #Add water: 13
#Add scour:14
#Start wash...
a.sterilize() #sterilizing clothes...
(二)
if __name__ == "__main__":
gm = GameMap()
worm = Worm(gm=gm, energy=10)
ant = Ant(gm=gm, energy=12)
while ant.energy != 0 and worm.energy != 0:
if gm.catched():
ant.deterio()
worm.deterio()
print("ant_energy:", ant.energy, "worm_energy:", worm.energy) # 打印能量
worm.jump()
ant.jump()