反恐精英游戏

反恐精英游戏,第1张

'''《反恐精英》是一款经典的对战游戏。将玩家分为“反恐精英”(Counter Terrorists)阵营与“恐怖份子” (Terrorists)阵营两队,每个队伍必须在一个地图上进行多回合的战斗。赢得回合的方法是达到该地图

要求的目标,或者是完全消灭敌方玩家。

现编写一个程序,可以创建角色对象,并可以为角色创建武器对象,创建角色后,可以让角色进行对

战,对战过程中,会对对方造成伤害。对战轮数可以随机来设定,对战结束后,查看各角色的状态,包

括存活状态、血量、所造成的伤害、子d数量等。'''

'''《反恐精英》是一款经典的对战游戏。将玩家分为“反恐精英”(Counter Terrorists)阵营与“恐怖份子” (Terrorists)阵营两队,每个队伍必须在一个地图上进行多回合的战斗。赢得回合的方法是达到该地图
要求的目标,或者是完全消灭敌方玩家。
现编写一个程序,可以创建角色对象,并可以为角色创建武器对象,创建角色后,可以让角色进行对
战,对战过程中,会对对方造成伤害。对战轮数可以随机来设定,对战结束后,查看各角色的状态,包
括存活状态、血量、所造成的伤害、子d数量等。'''

以下是代码:
# 导入随机数模块
import random


class Gun:
    """q类"""
    def __init__(self, name, bullet=0):
        # q支名字
        self.name = name
        # 子d
        self.bullet = bullet

    def add_bullet(self, bullet):
        """添加子d方法"""
        self.bullet += bullet


class Solider:
    def __init__(self, name, gun=None, typ=True):
        self.name = name
        # 武器
        self.gun = gun
        # 阵营,默认True,代表警察
        self.typ = typ
        # 血量
        self.blood = 100
        # 伤害
        self.hurt = 0

    def add_gun(self, gun):
        self.gun = gun
        msg = "%s已经装备了q%s" % (self.name, self.gun.name)
        self.solider_print(msg)

    def solider_print(self, msg):
        """传入你要打印的信息,然后打印不同的颜色"""
        if self.typ:
            msg = '3[31m%s3[0m' % msg
        else:
            msg = '3[34m%s3[0m' % msg
        print(msg)

    def add_bullet(self, bullet):
        """人为q添加子d"""
        # 判断是否为None用is而尽量不用==
        if self.gun is None:
            msg = "%s还没有q,请装备q" % self.name
            self.solider_print(msg)
            return
        self.gun.add_bullet(bullet)
        msg = "%s已经为q%s添加了%d发子d" % (self.name, self.gun.name, bullet)
        self.solider_print(msg)

    def fire(self, other):
        """开火方法"""
        if self.gun is None:
            # 没有q,无法开火
            msg = "%s没有q,无法开火,请装备q" % self.name
            self.solider_print(msg)
            return
        if self.gun.bullet <= 0:
            # 没有子弹,无法开火
            msg = "%s的枪%s没有子弹,无法开火,请上子弹" % (self.name, self.gun.name)
            self.solider_print(msg)
            return
        if self.blood <= 0:
            # 自己阵亡,无法开火
            return
        if other.blood <= 0:
            # 敌人阵亡,没必要开火
            return
        # 随机生成伤害值
        hurt = random.randint(10, 50)
        # 自己造成的伤害增加
        self.hurt += hurt
        # 别人的血量减少
        other.blood -= hurt
        # 子弹减少1
        self.gun.bullet -= 1
        msg = "%s正在射击%s,造成的伤害值为%d,当前子弹数为%d" % (
            self.name,
            other.name,
            hurt,
            self.gun.bullet
        )
        self.solider_print(msg)

    def show_info(self):
        if self.blood <= 0:
            if self.gun is None:
                msg = "%s已经阵亡,他没有枪" % self.name
                self.solider_print(msg)
            else:
                msg = "%s已经阵亡,他造成了%d点伤害,当前子弹数为%d" % (
                    self.name, self.hurt, self.gun.bullet)
                self.solider_print(msg)
        else:
            if self.gun is None:
                msg = "%s存活,他没有枪,当前血量为%d" % (self.name, self.blood)
                self.solider_print(msg)
            else:
                msg = "%s存活,他的枪为%s,有%d发子弹,他的血量为%d,造成的伤害值为%s" % (
                    self.name, self.gun.name, self.gun.bullet, self.blood, self.hurt
                )
                self.solider_print(msg)


def counter_strike():
    police = Solider('兰博')
    terriost = Solider('本拉登', Gun('Ak47', 30), typ=False)
    police.fire(terriost)
    m4 = Gun('m4')
    police.add_gun(m4)
    police.fire(terriost)
    police.add_bullet(50)
    # 随机射击一定的轮数
    for i in range(random.randint(10, 20)):
        soliders = [police, terriost]
        # 从soliders中随机选出一个士兵
        solider1 = random.choice(soliders)
        # 将刚才选出的士兵删掉
        soliders.remove(solider1)
        # 剩下的那个士兵就是列表取索引0
        solider2 = soliders[0]
        solider1.fire(solider2)
    # 展示状态信息
    police.show_info()
    terriost.show_info()


# 如果是主模块,执行,被导入则不执行,规定程序的入口
if __name__ == "__main__":
    counter_strike()

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/725749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存