python面向对象程序设计实践(初级)——以《三国演义》中三英大战吕布为例

python面向对象程序设计实践(初级)

——以《三国演义》中三英大战吕布为例

设计实现思路:

  • 定义武器类:武器名,攻击力
  • 定义人物类:继承武器类,姓名,生命值
  • 延时函数:延时0.5秒
  • 实例化人物类为4个对象如:刘关张三兄弟及吕布
  • 对象分别调用相关实例方法
#定义武器类:武器名,攻击力

class Wuqi():
    def __init__(self,tools,fight):
        self.fight = fight
        self.tools = tools
#定义人物类,继承武器类,姓名,生命值
class People(Wuqi):
    #初始化方法
    def __init__(self,name,life,tools,fight):
        super().__init__(tools,fight)
        self.name = name
        self.life = life
    #每次回复1点生命值  
    def eat(self):
        sleep()
        if self.life <= 0:
            print(self.name,'已阵亡!')
        else:
            self.life += 1
            print(self.name,'生命值+1~')
    #查看当前生命值
    def is_alive(self):
        sleep()
        if self.life <= 0:
            print(self.name,'已阵亡!')
        else:
            print(self.name,'的生命值还有',self.life)
    #攻击
    def attack(self,people):
        sleep() 
        people.life -=self.fight
        print("%s正在攻击%s~"%(self.name,people.name))

#延时函数
import time
def sleep():
    time.sleep(0.5)
#初始化人物对象
gy = People('关羽',100,'青龙偃月刀',10)
zf = People('张飞',100,'八丈蛇矛',8)
lb = People('刘备',100,'双股剑',7)

lvbu = People('吕布',100,'方天画戟',15)

gy.is_alive()
zf.is_alive()
lb.is_alive()
lvbu.is_alive()

print("----战斗开始----")
gy.attack(lvbu)
lb.attack(lvbu)
zf.attack(lvbu)

lvbu.attack(gy)
lvbu.attack(zf)
lvbu.attack(lb)

gy.eat()
zf.eat()
lb.eat()
lvbu.eat()


gy.is_alive()
zf.is_alive()
lb.is_alive()
lvbu.is_alive()
print("----战斗结束---")


你可能感兴趣的:(python,python,面向对象编程,类,对象,调用方法)