Python游戏逻辑

时间:2014-08-11 18:24:22

标签: python

正如该网站上的其他许多人似乎正在做的那样,我正在使用学习Python的方法来学习Python。

我在第36课,我们在第35课中根据他带领我们创建了自己的BBS风格的文本游戏。

http://learnpythonthehardway.org/book/ex36.html

http://learnpythonthehardway.org/book/ex35.html

我想提高"难度"游戏,所以我让迷宫变得更加复杂。部分客房设有多扇门,而不是每间客房的一个入口和一个入口。其中一些门没有任何结果,但有些房间可以从地图内的多个房间进入。

因此,在monster_room中,玩家可以通过monkey_room或empty_room进入。问题是,无论玩家从何处进入,monster_room都会运行相同的代码。由于我首先构建了empty_room,因此门选择和结果都基于该房间。

这里是monster_room代码:

def monster_room():
    print "You have stumbled into a dark room with a giant, but friendly, monster."
    print "There are four doors:"
    print "One straight ahead, one to your right, one to your left, and the one you just entered through."
    print "Which door would you like to choose?"

    door = raw_input("> ")

    if "left" in door:
        dead("The door magically recedes into the wall behind you and you find yourself forever trapped in a black room with no doors, no windows, and no hope of escape.")
    elif "right" in door:
        monkey_room()
    elif "straight" in door:
        dead("You step into the abyss and fall through nothingness to your certain death.")
    else:
        print "You found a magical shortcut to the Treasure Room!"
        treasure_room()

好的,非常简单,对吧?但是,如果有人从猴子室进入,门的位置是不同的。左边会通向空旷的房间,直到深渊,直接被困在永远的地方,然后回到你仍然是一条神奇的捷径。

我知道我可以创建一个monster_room_2或只能从monkey_room输入的东西,并且所有的门都在#34;正确的位置"但我认为可能有办法让游戏根据发送它们的功能给出选项。这有意义吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您可以为当前房间设置全局值,然后使用它。

CURRENT_ROOM = "whatever"

def monster_room():
    global CURRENT_ROOM
    if CURRENT_ROOM = "monkey":
        """Display monkey room choices""" 
    else:
        """display other room choices"""
    # don't forget to set your global to the room selected:
    CURRENT_ROOM = new_room

如果您愿意,您当然可以使用函数而不是字符串:

CURRENT_ROOM = monkey_room

然而,全局变量是代码气味。你最好不要使用课程,和/或将当前房间作为变量传递。

我做的事情如下:

class Game:
    def __init__(self):
        self.current_room = self.initial_room

    def initial_room(self):
        ...

    def monster_room(self):
        ...

    def monkey_room(self):
        ...

    def display_room(self):
        self.current_room()

所以在游戏"循环"您创建了Game的实例,并使用它来帮助跟踪您当前的位置以及类似的内容。