1. 什么是对象?什么是类?
对象:特征与技能的结合体
类:是一系列 具有相同特征与技能的对象 的结合体
2. 绑定方法的有什么特点
对象的绑定方法,是由对象来调用的。它的特殊之处就在于把对象本身当做第一个参数传入该方法中。
3. 基于面向对象设计一个对战游戏(仿制英雄联盟英雄角色)
'''
基于面向对象设计一个对战游戏(仿制英雄联盟)
英雄角色:
1. 姓名:瑞雯;
阵营:诺克萨斯;生命值:414;攻击力:54;金币:6300;护甲:12
2. 姓名:盖伦;
阵营:德玛西亚;生命值:455;攻击力:56;金币:3150;护甲:19
装备:
1. 名称:多兰之刃;
价格:475;加生命值:100;加攻击:9
'''
class hero:
def __init__(self, camp, hp, atk, money, armor):
self.camp = camp
self.hp = hp
self.atk = atk
self.money = money
self.armor = armor
def attack(self,enemy):
damage = self.atk*(1-enemy.armor/100)
enemy.hp -= damage
class equipment:
def __init__(self,prize,add_hp,add_atk,add_armor):
self.prize = prize
self.add_hp = add_hp
self.add_atk = add_atk
self.add_armor = add_armor
def update(self,hero):
hero.money -= self.prize
hero.hp += self.add_hp
hero.atk += self.add_atk
hero.armor += self.add_armor
def skill(self,enemy):
enemy.hp -= 300
# 1. 姓名:瑞雯;阵营:诺克萨斯;生命值:414;攻击力:54;金币:6300;护甲:12
# 2. 姓名:盖伦;阵营:德玛西亚;生命值:455;攻击力:56;金币:3150;护甲:19
Riven = hero('Noxus',414,54,6300,12)
Garen = hero('Demacia',455,56,3150,19)
# 名称:多兰之刃;价格:475;加生命值:100;加攻击:9
doran_blade = equipment(475,100,9,0)
# 名称:兰顿之盾;价格:2900;加生命值:400;加护甲:60
lantun_shield = equipment(2900,400,0,60)
print(Riven.hp,Riven.atk,Riven.money,Riven.armor)
print(Garen.hp,Garen.atk,Garen.money,Garen.armor)
if Riven.money > doran_blade.prize:
Riven.doran_blade = doran_blade
doran_blade.update(Riven)
if Garen.money > lantun_shield.prize:
Garen.lantun_shield = lantun_shield
lantun_shield.update(Garen)
print(Riven.hp,Riven.atk,Riven.money,Riven.armor)
print(Garen.hp,Garen.atk,Garen.money,Garen.armor)
Riven.attack(Garen)
print(Garen.hp,Garen.atk,Garen.money,Garen.armor)
Riven.doran_blade.skill(Garen)
print(Garen.hp,Garen.atk,Garen.money,Garen.armor)
结果:
414 54 6300 12
455 56 3150 19
514 63 5825 12
855 56 250 79
841.77 56 250 79
541.77 56 250 79