应用:老王开枪

应用:老王开枪
在这里插入图片描述

  1. 人类
    属性
    姓名
    血量
    持有的枪
    方法
    安子弹
    安弹夹
    拿枪(持有抢)
    开枪

  2. 子弹类
    属性
    杀伤力
    方法
    伤害敌人(让敌人掉血)

  3. 弹夹类
    属性
    容量(子弹存储的最大值)
    当前保存的子弹
    方法
    保存子弹(安装子弹的时候)
    弹出子弹(开枪的时候)

  4. 枪类
    属性
    弹夹(默认没有弹夹,需要安装)
    方法
    连接弹夹(保存弹夹)
    射子弹
    参考代码
    class Person(object):
    “”“定义一个人类”""
    def init(self, new_name):
    “”“完成对一个人对象的初始化后”""
    self.name = new_name
    self.gun = None # 用来存储枪对象的引用
    self.hp = 100 # 记录人的血量

    def str(self):
    “”“返回人对象的描述信息”""
    if self.gun:
    return “%s剩余血量是:%d 有枪, %s” % (self.name, self.hp, self.gun)
    else:
    if self.hp == 0:
    return “%s已经挂了…” % self.name
    else:
    return “%s剩余血量是:%d 没有枪” % (self.name, self.hp)

    def install_bullet_2_clip(self, bullet_temp, clip_temp):
    “”“安装子弹到弹夹中”""
    # 弹夹.保存(子弹)
    clip_temp.save_bullet(bullet_temp)

    def install_clip_2_gun(self, clip_temp, gun_temp):
    “”“安装弹夹到枪中”""
    # 枪.保存(弹夹)
    gun_temp.save_clip(clip_temp)

    def get_gun(self, gun_temp):
    “”“让人拿起枪”""
    self.gun = gun_temp

    def pull_trigger(self, enemy_temp):
    “”“让枪发射子弹射向敌人”""
    # 枪.发射(敌人)
    self.gun.fire(enemy_temp)

    def lose_hp(self, power_temp):
    “”“敌人掉血”""
    self.hp -= power_temp
    if self.hp < 0:
    self.hp = 0

class Gun(object):
“”“定一个枪类”""
def init(self, new_name):
“”“完成对枪对象的初始化”""
self.name = new_name
self.clip = None # 用来存储这个枪中的弹夹

def __str__(self):
    """返回这个枪对象的描述信息"""
    # 因为下面的代码中需要获取self.clip指向的对象的描述信息,因此
    # self.clip指向的对象中的__str__方法会被自动调用
    return  "枪(%s)里有弹夹,%s" % (self.name, self.clip)

def save_clip(self, clip_temp):
    """保存弹夹"""
    self.clip = clip_temp

def fire(self, enemy_temp):
    """向敌人发射一颗子弹"""
    # 让弹夹弹出一颗子弹
    # 弹夹.弹出一颗子弹()
    bullet = self.clip.pop_bullet()
    if bullet:
        # 让子伤害敌人
        # 子弹.掉血(敌人)
        bullet.hit_enemy(enemy_temp)
    else:
        print("%s中没有子弹了" % self.name)

class Clip(object):
“”“定义一个弹夹类”""
def init(self, new_max):
“”“完成弹夹对象的初始化”""
self.max = new_max
self.bullets = [] # 用来存储所有的子弹的引用

def __str__(self):
    """返回弹夹的描述信息"""
    return "弹夹的信息是: (%d/%d)" % (len(self.bullets), self.max)

def save_bullet(self, bullet_temp):
    """保存这个一颗子弹"""
    self.bullets.append(bullet_temp)

def pop_bullet(self):
    """返回最上面的一颗子弹"""
    if self.bullets:
        bullet = self.bullets.pop()
        return bullet
    else:
        return None

class Bullet(object):
“”“定一个子弹类”""
def init(self, new_power):
“”“完成对子弹对象的初始化”""
self.power = new_power # 子弹的威力

def hit_enemy(self, enemy_temp):
    """让敌人掉血"""
    # 敌人.掉血()
    enemy_temp.lose_hp(self.power)

def main():
“”“完成整个程序的控制”""
# 创建老王对象
lao_wang = Person(“老王”)

# 创建一个枪
ak47 = Gun("AK47")

# 创建一个子弹
bullet = Bullet(20)  # 20表示杀伤力

# 创建一个弹夹
clip = Clip(10)  # 10表示这个弹夹最大的容量

# 让老王把子弹安装到弹夹中
# 老王.安装子弹(子弹, 弹夹)
lao_wang.install_bullet_2_clip(bullet, clip)

# 让老王把弹夹安装到枪中
# 老王.安装弹夹(弹夹,枪)
lao_wang.install_clip_2_gun(clip, ak47)

# 测试枪的信息
# print(ak47)

# 老王拿起枪
# 老王.拿起(枪)
lao_wang.get_gun(ak47)
print(lao_wang)

# 创建一个敌人
enemy = Person("隔壁老宋")

# 老王向敌人扣扳机
# 老王.扣扳机(敌人)
lao_wang.pull_trigger(enemy)
print(enemy)

lao_wang.pull_trigger(enemy)
print(enemy)

bullet = Bullet(30)
lao_wang.install_bullet_2_clip(bullet, clip)

bullet = Bullet(90)
lao_wang.install_bullet_2_clip(bullet, clip)

lao_wang.pull_trigger(enemy)
print(enemy)
lao_wang.pull_trigger(enemy)
print(enemy)

if name == ‘main’:
main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值