day19 作业

今日作业

1.什么是对象?什么是类?

对象:特征和技能的结合体

类:一系列对象 相同的特征和技能的结合体

2.绑定方法的有什么特点

对象调用类内部的函数 称之为绑定方法,特点:

  1. 不同的对象调用该绑定方法,则会将不同对象传入该绑定方法中
  2. 对象的绑定方法是由对象来调用的,特点就是把对象当做第一个参数(self)传进去

3.基于面向对象设计一个对战游戏

仿制英雄联盟英雄角色

属性
name(名字) 瑞文
money(余额) 1000
damage(攻击力) 54
hujia(护甲值) 3
life(生命值) 4104
attack 攻击技能(方法)
属性
name(名字) 盖伦
money(余额) 1000
damage(攻击力) 50
hujia(护甲值) 10
life(生命值) 5000
attack 攻击(技能方法)
属性
price(价格) 475
aggrev(攻击力) 9
life(生命值) 100
update_attack 减钱、增加生命值、攻击力(技能方法)
fire 喷火,主动技能(技能方法)

'''
需求:
    瑞文类
    盖伦类
    装备类
    瑞文购买装备,减钱、加攻击力
    攻击盖伦英雄,掉血
'''

# 定义瑞文类
class Ruiwen:
    def __init__(self,name,money=1000,damage=54,hujia=3,life=4104):
        self.name = name
        self.money = money
        self.damage = damage
        self.hujia = hujia
        self.life = life

    def attack(self,diren):
        damage_value = self.damage - diren.hujia    # 掉血量 = 攻击力-敌人的护甲
        diren.life -= damage_value                  # 敌人的剩余血量

# 定义盖伦类
class Gailun:
    def __init__(self,name,money=1000,damage=50,hujia=10,life=5000):
        self.name = name
        self.money = money
        self.damage = damage
        self.hujia = hujia
        self.life = life

    def attack(self,diren):
        damage_value = self.damage - diren.hujia
        diren.life -= damage_value

# 定义装备类
class ZhuangBei:
    def __init__(self,price=475,aggrev=9,life=100):
        self.price = price
        self.aggrev = aggrev
        self.life = life
        self.damage = 1000          # 装备自身攻击力

    def update_attack(self,obj):
        obj.money -= self.price     # 减钱
        obj.damage += self.aggrev   # 加攻击力
        obj.life += self.life       # 加生命值

    def fire(self,obj):             # 主动技能,喷火,烧死敌人
        obj.life -= 1000


# 创建对象
r1 = Ruiwen("瑞文")
g1 = Gailun("盖伦")
b1 = ZhuangBei()

print(f"剩余 ${r1.money}, 生命值 {r1.life},攻击力 {r1.damage}")

if r1.money >= b1.price:
    r1.b1 = b1              # 类的组合,添加装备攻击属性
    b1.update_attack(r1)    # 给英雄增加攻击、生命值属性

print(f"剩余 ${r1.money}, 生命值 {r1.life},攻击力 {r1.damage}")

# 查看盖伦英雄的剩余生命值
print("盖伦英雄的剩余生命值:",g1.life)
r1.attack(g1)       # 普通攻击
# 查看盖伦英雄的剩余生命值
print("盖伦英雄的剩余生命值:",g1.life)

while True:
    if g1.life <= 1000:
        print("盖伦死了")
        break
    r1.b1.fire(g1)      # 使用装备的主动攻击
    # 查看盖伦英雄的剩余生命值
    print(f"盖伦受到来自瑞文持有多兰剑装备 {b1.damage} 的攻击力,剩余生命值:", g1.life)

# 查看盖伦英雄的剩余生命值
print("盖伦英雄的剩余生命值:", 0)

终端打印:

剩余 $1000, 生命值 4104,攻击力 54
剩余 $525, 生命值 4204,攻击力 63
盖伦英雄的剩余生命值: 5000
盖伦英雄的剩余生命值: 4947
盖伦受到来自瑞文持有多兰剑装备 1000 的攻击力,剩余生命值: 3947
盖伦受到来自瑞文持有多兰剑装备 1000 的攻击力,剩余生命值: 2947
盖伦受到来自瑞文持有多兰剑装备 1000 的攻击力,剩余生命值: 1947
盖伦受到来自瑞文持有多兰剑装备 1000 的攻击力,剩余生命值: 947
盖伦死了
盖伦英雄的剩余生命值: 0
posted @ 2019-10-09 16:12  GeminiMp  阅读(107)  评论(0)    收藏  举报