要求的目标,或者是完全消灭敌方玩家。
现编写一个程序,可以创建角色对象,并可以为角色创建武器对象,创建角色后,可以让角色进行对
战,对战过程中,会对对方造成伤害。对战轮数可以随机来设定,对战结束后,查看各角色的状态,包
括存活状态、血量、所造成的伤害、子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()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)