基于Python的模拟反恐精英小Demo

基于Python的模拟反恐精英小Demo
演示反恐精英案例
思维步骤:

  1. 定义人类,描述公共属性 life:100 name:姓名要传参
  2. 定义出英雄与恐怖分子类
  3. 定义主函数描述枪战过程 main,创建两个对象
  4. 定义开枪方法,分成两个方法,警察和土匪都有定义的方法要传入被射击的对象被射击对象的生命值要进行减少
  5. 主程序中调用开枪操作
  6. 开枪操作后,要在主程序中显示每个人的状态信息
  7. 定义Person类的__str__方法,用于显示每个人的状态
  8. 设置开枪操作为反复操作, 再设置停止条件:一方生命值<=0
    停止循环使用break
import random   # 定义随机
class Person:
    def __init__(self, name):
        self.name = name
        self.hp = 100   # 共有变量 hp

    def __str__(self):
        return "%s当前生命值为%d" % (self.name, self.hp) # 返回对象调用return 显示当前值


class Hero(Person):
    def fire(self, p):

        hit = random.randint(1,100)     # 定义hit为命中率 产生随机数
        if hit > 20:                        # 命中率为80
            if p.hp == 0:
                print("%s都死了不要打了" % p.name)     # 判断对象的血量如果等于0时输出在鞭尸
            else:
                damage = random.randint(40, 60)    # 判断打中后 产生的随机伤害值
                print("%s向%s开了一枪,掉了%d血" % (self.name, p.name, damage))
                if p.hp < damage:   # 判断血量小于伤害值时  血量赋值为0
                    p.hp = 0
                else:
                    p.hp -= damage    # 伤害值 - 血量值 = 当前血量值
        else:
            print("没打中%s" % self.name)



    def __str__(self):
        state = ""             # 定义一个字符串state
        if self.hp == 100:
            state = "无伤"

        elif self.hp > 70 and self.hp < 100:

            state = "轻伤"


        elif self.hp > 1 and self.hp < 70:
            state = "重伤"

        elif self.hp <= 0:
            state = "挂了"
        return "%s的当前状态为%s" % (self.name, state)


class Bad(Person):
    def fire(self, p):
        damage = random.randint(1,10)
        hit = random.randint(1,100)
        if hit > 90:
            print("%s向%s开了一枪,掉了%d血" % (self.name, p.name, damage))
            if p.hp < damage:
                p.hp = 0
            else:

                p.hp -= damage
        else:
            print("%s没打中警察" % self.name)


def main():
    h = Hero("警察")
    bad1 = Bad("路人甲")
    bad2 = Bad("土匪已")
    bad3 = Bad("炮灰丙")
    while True:
        x = random.randint(1, 3)      # 定义随机数,等于1 时向bad1开枪.....
        if x == 1:
            h.fire(bad1)
        elif x == 2:
            h.fire(bad2)
        elif x == 3:
            h.fire(bad3)
        bad1.fire(h)
        bad2.fire(h)
        bad3.fire(h)
        print(h)
        print(bad1)
        print(bad2)
        print(bad3)
        print()
        if h.hp <= 0:
            print("%s死亡,游戏结束" % h.name)
            break
        if bad1.hp <= 0 and bad2.hp <= 0 and bad3.hp <= 0:
            print("恐怖分子全部死亡")
            break
main()

你可能感兴趣的:(Python小实例)