练习题4

某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精
设定

  1. 蛇怪类:
    属性包括:怪物名字,生命值,攻击力
    方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值)
  2. 蜈蚣精类:
    属性包括:怪物名字,生命值,攻击力
    方法包括:攻击,移动(飞行移动)
    要求
  3. 分析蛇怪和蜈蚣精的公共成员,提取出父类—怪物类
  4. 利用继承机制,实现蛇怪类和蜈蚣精类
  5. 攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力
  6. 编写测试类,分别测试蛇怪和蜈蚣精的对象及相关方法
  7. 定义名为mon的包存怪物类,蛇怪类,蜈蚣精类和测试类

from abc import abstractmethod

class Monster:
def init(self, name, hp, atk):
self.__name = name
self.__hp = hp
self.__atk = atk

def set_name(self, name):
    self.__name = name

def get_name(self):
    return self.__name

def set_hp(self, hp):
    self.__hp = hp

def get_hp(self):
    return self.__hp

def set_atk(self, atk):
    self.__atk = atk

def get_atk(self):
    return self.__atk

def attack(self):
    return f'怪物{self.__name}展开攻击'

@abstractmethod
def move(self):
    pass

@abstractmethod
def show(self):
    pass

class Snake(Monster):
def move(self):
return '我是蛇怪,我走S型路线'

def re_blood(self):
    # 生命值加20
    self.set_hp(self.get_hp() + 20)
    print(f'实施大蛇补血术。。。。。,当前生命值是:{self.get_hp()}')

def show(self):
    print(self.attack())
    print(f'当前生命值是:{self.get_hp()}')
    print(f'攻击力是:{self.get_atk()}')
    self.re_blood()
    print(self.move())

class WuGong(Monster):
def move(self):
return '我是蜈蚣精,御风飞行'

def show(self):
    print(self.attack())
    print(f'当前生命值是:{self.get_hp()}')
    print(f'攻击力是:{self.get_atk()}')
    print(self.move())

if name == 'main':
# 创建一个蛇怪
# name, hp, atk
s1 = Snake('蛇怪甲', 5, 20)
s1.show()
print('========================')
w1 = WuGong('蜈蚣乙', 60, 15)
w1.show()

posted @ 2024-01-17 16:30  peculiar-  阅读(36)  评论(0)    收藏  举报