正如该网站上的其他许多人似乎正在做的那样,我正在使用学习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;正确的位置"但我认为可能有办法让游戏根据发送它们的功能给出选项。这有意义吗?
非常感谢任何帮助。
答案 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
的实例,并使用它来帮助跟踪您当前的位置以及类似的内容。