python之简单版反恐精英

class Player(object):
    """玩家类"""


    def __init__(self, name, hp=100):
        """初始化玩家属性"""
        self.name = name  # 名字
        self.hp = hp  # 血量
        self.gun = None  # 枪


    def __str__(self):
        """返回玩家描述信息"""
        if self.hp <= 0:
            return '%s 已经死翘翘了' % (self.name)


        if not self.gun:
            return '%s 剩余血量为 %d,目前没枪' % (self.name, self.hp)


        return '%s 剩余血量为 %d, 使用的枪为 %s' % (self.name, self.hp, self.gun)


    def take_gun(self, gun):
        """捡枪"""
        self.gun = gun


    def fire(self, enemy):
        """开枪射击敌人"""
        if not self.gun:
            print('没有枪,无法射击')
            return


        self.gun.shoot(enemy)


    def hurt(self, damage):
        """玩家受到伤害,需要扣血"""
        self.hp -= damage
        print('%s 受到 %d 点伤害,剩余血量为 %d' % (self.name, damage, self.hp))






class Gun(object):
    """枪类"""


    def __init__(self, model, damage):
        """初始化枪的属性"""
        self.model = model  # 型号
        self.damage = damage  # 杀伤力
        self.bullet_count = 0  # 子弹数量


    def __str__(self):
        """返回枪的描述信息"""
        return '%s 杀伤力是 %d, 剩余子弹为 %d 颗' % (self.model, self.damage, self.bullet_count)


    def add_bullet(self, count):
        """添加子弹"""
        self.bullet_count += count


    def shoot(self, enemy):
        """射击敌人,造成伤害"""
        # 没有子弹则不能继续射击
        if self.bullet_count <= 0:
            print('没有子弹了,无法射击~')
            return  # return 后什么都不写,一般用于终止函数


        # 射击并造成伤害
        self.bullet_count -= 1
        if enemy:
            # print('%s 射击  %s, 造成 %d 伤害' % (self.model, enemy, self.damage))
            enemy.hurt(self.damage)
        else:
            print('没有敌人,打空了~')




def test():
    """测试函数"""
    # 枪类的测试
    # 创建枪
    ak47 = Gun('ak47', 99)
    print(ak47)


    # 添加子弹
    ak47.add_bullet(2)
    print(ak47)


    # 射击敌人
    # ak47.shoot(None)
    # print(ak47)
    # ak47.shoot('张三丰')
    # print(ak47)
    # ak47.shoot('张三丰')
    # print(ak47)


    print('------------------枪类测试结束-----------------')


    # 玩家测试
    police = Player('警察', 150)
    print(police)
    badman = Player('土匪')
    print(badman)


    # 玩家捡枪
    police.take_gun(ak47)
    print(police)


    # 玩家射击
    police.fire(badman)
    print(badman)
    police.fire(badman)
    print(badman)
    police.fire(badman)
    print(badman)




def main():
    """游戏主逻辑"""
    # 创建两个玩家
    police = Player('警察')
    badman = Player('土匪')
    print(police)
    print(badman)


    # 创建枪
    k98 = Gun('98k', 70)
    k98.add_bullet(2)


    # 玩家拿枪
    badman.take_gun(k98)
    print(badman)


    # 开枪射击
    badman.fire(police)
    badman.fire(police)
    print(police)
    badman.fire(police)


# test()
main()

你可能感兴趣的:(python之简单版反恐精英)