反恐精英基础版

import random


class Person(object):
    def __init__(self, name):
        self.life = 100
        self.name = name

    def __str__(self):
        return "{}当前的生命值是:{}".format(self.name, self.life)


class Hero(Person):
    def fire(self, p):
        # 伤害值, 伤害值加入波动
        damage = random.randint(50, 70)
        # 加入命中率
        hit_rate = random.randint(1, 100)
        if hit_rate >= 20:  # 命中率80%
            # 判断射击对象是否已死
            if p.life <= 0:
                print("{}已死了,{}你就不要继续打了".format(p.name, self.name))
                return
            # 当生命值 小于 受伤值时:
            if p.life < damage:
                # 生命值置为0
                p.life = 0
                print("{}已被{}打趴下".format(p.name, self.name))
            else:
                # 生命值减少
                p.life -= damage
                # 命中
                print("{}向{}开枪,造成了{}伤害".format(self.name, p.name, damage))
        else:
            # 没有命中
            print("{}没有打中敌人,枪法不准,回家再练练".format(self.name))


    def __str__(self):
        state = ''
        if self.life == 100:
            state = "无伤"
        elif self.life >= 70 and self.life < 100:
            state = "轻伤"
        elif self.life >= 1 and self.life < 70:
            state = "重伤"
        elif self.life <= 0:
            state = "挂了"
        return "{}当前的状态为:{}, 血值:{}".format(self.name, state, self.life)


class Is(Person):
    def fire(self, p):
        # 伤害值加入波动
        damage = random.randint(5, 10)
        # 命中率
        hit_rate = random.randint(1, 100)
        if hit_rate >= 60:  # 命中率40%
            # 判断射击对象是否已死
            if p.life <= 0:
                print("{}已死了,{}你就不要继续打了".format(p.name, self.name))
                return
            # 命中
            # 当生命值 小于 受伤值时:
            if p.life < damage:
                # 生命值置为0
                p.life = 0
                print("{}已被{}打趴下".format(p.name, self.name))
            else:
                # 生命值减少
                p.life -= damage
                print("{}向{}开枪,造成了{}伤害".format(self.name, p.name, damage))
        else:
            # 没有命中
            print("{}你的枪法真的不行,还是多回家练一练吧".format(self.name))


    def __str__(self):
        return "{}当前的生命值是:{}".format(self.name, self.life)


def main():
    # 创建英雄对象
    h = Hero("【英雄】")
    # 创建恐怖分子对象
    is1 = Is("【不要命1】")
    # 创建恐怖分子对象
    is2 = Is("【不要命2】")
    # 创建恐怖分子对象
    is3 = Is("【不要命3】")
    while True:
        # 产生随机数,判断向几号敌人开枪
        enemy_num = random.randint(1, 3)
        if enemy_num == 1:
            # 英雄向恐怖分子1开枪
            h.fire(is1)
        elif enemy_num == 2:
            # 英雄向恐怖分子2开枪
            h.fire(is2)
        else:
            # 英雄向恐怖分子3开枪
            h.fire(is3)
        # 恐怖分子向英雄开枪
        is1.fire(h)
        # 恐怖分子向英雄开枪
        is2.fire(h)
        # 恐怖分子向英雄开枪
        is3.fire(h)
        print(h)
        print(is1)
        print(is2)
        print(is3)
        print("-" * 50)
        if h.life <= 0:
            print("{}已挂,枪战结束".format(h.name))
            break
        if is1.life <= 0 and is2.life <= 0 and is3.life <= 0:
            print("全部恐怖份子已死亡,枪战结束")
            break


if __name__ == '__main__':
    main()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值