python学习笔记(17)learn python the hard way 第43个练习死活运行不了,学习ING

from sys import exit
#exit(0)表示正常中断程序,exit(1)表示发生错误


from random import randint
#从random模块中导入randint函数
#random.randint(a, b),用于生成一个指定范围内的整数
#其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b


class Scene(object):#场景总类
    def enter(self):#进入
        print("这个场景还没有配置好,子类无法实施")
        exit(1)


class Engine(object):#引擎,总类
    def __init__(self,scene_map):#初始化场景地图函数
        self.scene_map = scene_map#初始化场景地图为本次引擎启用的地图
    def play(self):
        current_scene = self.scene_map.opening_scene()#运行当前地图
        while True:
            print("\n——————")
            next_scene_name = current_scene.enter()
            current_scene = self.scene_map.next_scene(next_scene_name)
            #重复运行对象地图直到进入下一个地图


class Death(Scene):#死亡房间,场景总类中的对象1
    quips = [
        "你死了!真是太惨了!",
        "你母亲会为你骄傲的,如果她聪明的话.",
        "你是个失败者.",
        "我的狗都做的比你好!"
        ]
    def enter(self):#进入
        print(Death.quips[0,len(self.quips)-1])#打印上面的话
        exit(1)


class Finished(Scene):
    def enter(self):
        print("你赢得地球文明颁发的“守护卫士勋章”")
        print("这个勋章由10公斤的黄金构成!")
        
class Central_Corridor(Scene):#中央走廊,场景总类中的对象2
    def enter(self):#进入
        print("德玛西亚行星人入侵你的船,你是最后的幸存者,任务是从武器库得到中子自毁炸弹")
        print("把它放在桥上")
        print("然后进一个逃生舱")
        print("你跑在中央走廊的武器军械库时")
        print("有一个漂亮的女行星人司机穿着LOL女枪的服装挡住了门")
        print("你有以下几个选择:喊一声“德玛西亚”出去砍它。")
        print("“嘲讽”然后快速闪现! ")
        print("直接“投降”,大喊老司机带我上车!")


        action = input(">")
        if action == "德玛西亚":
            print("你跳起的那一下感觉自己就像天边的彩虹")
            print("然后对方轻蔑的一笑,一枪把你爆头!")
            print("你死了...")
            return "death"


        elif action == "嘲讽":
            print("你大喊一声我是你爷爷!然后果断躲过了对方丢过来的箱子")
            print("你觉得自己的敏戒值爆表了")
            print("“砰”的一声你被爆头了...")
            print("对方朝冒烟的枪口吹了口气,缓缓走开了...")
            return "death"


        elif action == "投降":
            print("对方鄙视了你一下,走开了,你活了下来...")
            return "laser_weapon_armory"


        else:
            print("这太荒谬了。")
            return "central_corridor"


class Laser_Weapon_Armory(Scene):#武器房间,场景总类中的对象3
    def enter(self):#进入
        print("你到了武器房间,这里有一个密码,输入密码才能进去")
        print("旁边不显眼的地方有一张纸条,上面写着:两位数随便猜,看缘分")
        print("或者用通用密码1024")
        code = "%%%" % (randint(1,9),randint(1,9))
        guess = input(">")
        guesses = 1024
        times = 0


        while guess != code and guesses!=1024 and times <9:
            print("密码错误")
            times += 1
            print("你还有%s次机会" % times)
            guess = input(">")
            
        if guess ==code or guesses ==1024:
            print("密码正确,通过审核,你拿走了炸弹!")
            return "the_bridge"
        else:
            print("系统启动防御模式,你被激光杀死!")
            return "death"
            
class The_Bridge(Scene):#主控制舱,场景总类中的对象4
    def enter(self):#进入
        print("你有以下选择:直接引爆(我敬你是条汉子),隐蔽安放炸弹")
        action = input(">")


        if action == "直接引爆":
            print("你和外星人同归于尽!")
            return "death"
        elif action == "隐蔽安放炸弹":
            print("炸弹将在10分钟后爆炸!")
            print("小子,我很看好你啊")
            return "escape_pod"
        else:
            print("别闹,还能不能继续了!")
            return "the_bridge"


class Escape_Pod(Scene):#救生舱,场景总类中的对象5
    def enter(self):#进入
        print("你进入了救生舱,输入密码就能启动小飞船逃离")
        print("你还想上次那样找个提示的小纸条,但是周围并没有,你骂了声:“操!”")
        print("突然听到系统提示:你特么的居然敢骂我!密码是一位数,自己猜去吧")
        good_pod = randint(1,9)
        guess = input(">")


        while guess != good_pod:
            print("密码错误!请输入正确的密码。")
            guess = input(">")
        if guess == good_pod:
            print("good job,你打败了外星人,并且逃了出来。")
            print("你获得了史诗般的胜利!")
            return "finished"
        else:
            print("你死了,是蠢死的!")
            print("No zuo no die why you try")
            return "death"


class Map(object):#地图,总类
    scenes = {
        "central_corridor":Central_Corridor(),
        "laser_weapon_armory":Laser_Weapon_Armory(),
        "the_bridge":The_Bridge(),
        "escape_pod":Escape_Pod(),
        "death":Death(),
        "finished":Finished()
        }
    
    def __init__(self,start_scene):#初始化地图
        self.start_scene = start_scene
        
    def next_scene(self,scene_name):#下一个地图
        return Map.scenes.get(scene_name)
    
    def opening_scene(self):#打开场景
        return self.next_scene(self,start_scene)


a_map = Map("central_corridor")#设定地图名变量
a_game = Engine(a_map)#设定启动引擎的变量

a_game.play#运行引擎

以上的代码运行不了,错误可能出现在类与对象的继承和调用上面,也可能错误出现在引擎和地图的设置上面,目前的能力水平无法查错,所以没办法解决,下面用我自己的方法重做上面的游戏流程内容,删掉了类与对象的运用内容


下面为我自己重写的代码:

from random import randint
#从random模块中导入randint函数
#random.randint(a, b),用于生成一个指定范围内的整数
#其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b


def Death():#死亡房间,场景总类中的对象1
    quips = [
        "你死了!真是太惨了!",
        "你母亲会为你骄傲的,如果她聪明的话.",
        "你是个失败者.",
        "我的狗都做的比你好!"
        ]
    a = randint(0,3)
    print(quips[a])#打印上面的话
    print("回车键结束游戏,如果想要重新来一遍,请输入:“再来一遍”")
    a = input(">")
    if a == "再来一遍":
        Central_Corridor()
    else:
        print("游戏结束!")


def Finished():
    print("你赢得地球文明颁发的“守护卫士勋章”")
    print("这个勋章由10公斤的黄金构成!")
    print("回车键结束游戏,如果想要重新来一遍,请输入:“再来一遍”")
    a = input(">")
    if a == "再来一遍":
        Central_Corridor()
    else:
        print("游戏结束!")


def Central_Corridor():#中央走廊,场景总类中的对象2
    print("德玛西亚行星人入侵你的船,你是最后的幸存者,任务是从武器库得到中子自毁炸弹")
    print("把它放在桥上")
    print("然后进一个逃生舱")
    print("你跑在中央走廊的武器军械库时")
    print("有一个漂亮的女行星人司机穿着LOL女枪的服装挡住了门")
    print("你有以下几个选择:喊一声“德玛西亚”出去砍它。")
    print("“嘲讽”然后快速闪现! ")
    print("直接“投降”,大喊老司机带我上车!")


    action = input(">")
    if action == "德玛西亚":
        print("你跳起的那一下感觉自己就像天边的彩虹")
        print("然后对方轻蔑的一笑,一枪把你爆头!")
        print("你死了...")
        Death()


    elif action == "嘲讽":
        print("你大喊一声我是你爷爷!然后果断躲过了对方丢过来的箱子")
        print("你觉得自己的敏戒值爆表了")
        print("“砰”的一声你被爆头了...")
        print("对方朝冒烟的枪口吹了口气,缓缓走开了...")
        Death()


    elif action == "投降":
        print("对方鄙视了你一下,走开了,你活了下来...")
        Laser_Weapon_Armory()


    else:
        print("这太荒谬了。")
        Central_Corridor()


def Laser_Weapon_Armory():#武器房间,场景总类中的对象3
    print("你到了武器房间,这里有一个密码,输入密码才能进去")
    print("旁边不显眼的地方有一张纸条,上面写着:两位数随便猜,看缘分")
    print("或者用通用密码1024")
    code = "%s%s" % (randint(1,9),randint(1,9))
    times = 0
    a = True
    while a:
        guess = input(">")
        if guess == code or guess == "1024":
            print("密码正确,通过审核,你拿走了炸弹!")
            a = False
            The_Bridge() 
        elif guess > code and times <9 and guess != "1024":
            print("密码错误,你输入的数字太大了。")
            times += 1
            print("你还有%s次机会" % int(10-times))
        elif guess < code and times <9 and guess != "1024":
            print("密码错误,你输入的数字太小了。")
            times += 1
            print("你还有%s次机会" % int(10-times))
        else:
            print("系统启动防御模式,你被激光杀死!")
            Death()
            
def The_Bridge():#主控制舱,场景总类中的对象4
    print("你有以下选择:直接引爆(我敬你是条汉子),隐蔽安放炸弹")
    action = input(">")


    if action == "直接引爆":
        print("你和外星人同归于尽!")
        Death()
    elif action == "隐蔽安放炸弹":
        print("炸弹将在10分钟后爆炸!")
        print("小子,我很看好你啊")
        Escape_Pod()
    else:
        print("别闹,还能不能继续了!")
        The_Bridge()


def Escape_Pod():#救生舱,场景总类中的对象5
    print("你进入了救生舱,输入密码就能启动小飞船逃离")
    print("你还想上次那样找个提示的小纸条,但是周围并没有,你骂了声:“操!”")
    print("突然听到系统提示:你特么的居然敢骂我!密码是一位数,自己猜去吧")
    good_pod = "%s" % randint(1,9)
    a = True
    while a:
        guess = input(">")
        if guess == good_pod:
            print("good job,你打败了外星人,并且逃了出来。")
            print("你获得了史诗般的胜利!")
            a = False
            Finished()
        elif guess > good_pod:
            print("密码错误!你输入的数字太大了,请输入正确的密码。")
        elif guess < good_pod:
            print("你输入的数字太小了,请重新输入")
        else:
            print("你死了,是蠢死的!")
            print("No zuo no die why you try")
            Death()


start = Central_Corridor()#设定地图名变量
start




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值