面向对象
人狗大战
# 人狗大战
# 人-角色
#属性
# 名称 等级 血量 攻击力 性别 职业
def Person(name,hp,ad,sex,job,level=1): # 角色的模板
person_dic = {'name':name,'level':level,'hp':hp,'ad':ad,'sex':sex,'job':job}
return person_dic
alex = Person('alex',100,5,'不详','乞丐') # 角色
wusir = Person('wusir',200,6,'女','嫂子')
print(alex)
print(wusir)
# 狗-角色
def Dog(name,kind,hp,ad):
dog_dic = {'name':name,'kind':kind,'hp':hp,'ad':ad}
return dog_dic
dog1= Dog('旺财','teddy',2000,150)
print(dog1)
dog2 = Dog('二饼','哈士奇',10000,300)
print(dog2)
def Person(name,hp,ad,sex,job,level=1): # 角色的模板
person_dic = {'name':name,'level':level,'hp':hp,'ad':ad,'sex':sex,'job':job}
def attack(dog,Person):
dog['hp'] -= person_dic['ad']
print('%s攻击了%s,%s掉了%s点血'%(person_dic['name'],dog['name'],dog['name'],person_dic['ad']))
return person_dic
alex = Person('alex',100,5,'不详','乞丐') # 角色
wusir = Person('wusir',200,6,'女','嫂子')
print(alex)
print(wusir)
def Dog(name,kind,hp,ad):
dog_dic = {'name':name,'kind':kind,'hp':hp,'ad':ad}
def bite(dog,person):
person['hp'] -= dog_dic['ad']
print('%s咬了%s,%s掉了%s点血' % (dog_dic['name'], person['name'], person['name'], dog_dic['ad']))
return dog_dic
dog1= Dog('旺财','teddy',2000,150)
print(dog1)
dog2 = Dog('二饼','哈士奇',10000,300)
print(dog2)
attack(alex,dong1)
bite(dog2,alex)
bite(alex,dong2)
def Person(name,hp,ad,sex,job,level=1): # 角色的模板
person_dic = {'name':name,'level':level,'hp':hp,'ad':ad,'sex':sex,'job':job}
def attack(dog):
dog['hp'] -= person_dic['ad']
print('%s攻击了%s,%s掉了%s点血'%(person_dic['name'],dog['name'],dog['name'],person_dic['ad']))
person_dic['attack'] = attack #约束,attack方法只是人的方法
return person_dic
alex = Person('alex',100,5,'不详','乞丐') # 角色
wusir = Person('wusir',200,6,'女','嫂子')
print(alex)
print(wusir)
def Dog(name,kind,hp,ad):
dog_dic = {'name':name,'kind':kind,'hp':hp,'ad':ad}
def bite(person):
person['hp'] -= dog_dic['ad']
print('%s咬了%s,%s掉了%s点血' % (dog_dic['name'], person['name'], person['name'], dog_dic['ad']))
dog_dic['bite'] = bite #约束,bite只能是狗的方法
return dog_dic
dog1= Dog('旺财','teddy',2000,150)
print(dog1)
dog2 = Dog('二饼','哈士奇',10000,300)
print(dog2)
dog1['bite'](wusir)
alex['attack'](dog1)
#Person就是一个类,通过类创建出来的alex和wusir都是这个类的对象
面向对象语法
# 程序中有多少个角色
# 每个角色有什么技能 有什么属性
# 所有的角色都是由一个模板创建的
# 我们甚至不关心程序的结果是什么
# 所有的属性 和 技能都 待在自己的角色模板中
# 能够一眼就看出程序的结构 -- 可读性好
# 能够更加方便的为角色添加技能或者属性 -- 可扩展性高
# 抽象
# 类 -- 角色模板 抽象的
# 通过类创建 对象 -- 角色 具体的
# 具体表现在所有的属性都具有了具体的值
# 为了一个类去创建的时候,给类创建很多抽象的属性名字,方法名字,但是具体的值都是在创造角色的过程中体现出来的
# 类的命名以大写开头,第一个字母大写
# class 类
# def psersonType
class Person: #不能放参数
def __init__(self,name,hp,ad,sex,job): #这里放参数,固定格式,init初始化函数,self生成一个内存空间,将值传到self
self.username = name #self.username可以改变名字,但是name是值不能改变
self.hp = hp
self.ad = ad
self.sex = sex
self.job = job
alex = Person('alex',100,5,'不详','乞丐') # 实例化
wusir = Person('wusir',200,6,'女','嫂子') #self创建各自的空间
print('-->',alex) #Alex = self
print(alex.username,wusir.username)
print(alex.ad)
print(alex.sex)
print(alex.job)
# class后面跟类名创造一个类
# 类名() -->对象
class Dog:
def __init__(self,name,kind,hp,ad): # 初始化方法
self.name = name
self.kind = kind
self.hp = hp
self.ad = ad
旺财 = Dog('旺财','teddy',2000,300)