所以,我终于到了《LPTHW》的结尾,我正在创造我自己的文本冒险类型的游戏。
我想在游戏中加入一个保存功能(可能是通过使用文件写入)。此外,游戏还可以根据你在游戏中的位置给你提示。我基本需要的是:
在while循环中会有很多提示用户输入(raw_input)。我希望能够键入SAVE或HINT任何时候触发一个函数。我该如何做到这一点,这样我就不必每次都创建相同的条件?(例如elif action == "HINT": print "..."
)
是否有一种方法可以创建一些全局表达式,以便每次在提示符中键入它们时,我都可以对它们进行操作?我将创建一个带有字典的模块,当玩家出现在特定位置时,它将引用特定的提示。我只是想避免在所有地方使用相同的条件。
如果您将输入分离到一个函数中,则可以轻松传递hint
并访问save:
def user_input(prompt, hint):
while True:
ui = raw_input(prompt)
if ui.lower() == "hint":
print hint
elif ui.lower() == "save":
save()
else:
return ui
您还可以在这里添加检查,以确保用户保持在特定的choices
内(一个额外的参数),处理任何错误,并且只处理return
有效输入。
你应该使用字典
def do_save(*args,**kwargs):
print "SAVE!"
def do_hint(*args,**kwargs):
print "HINT!"
def do_quit(*args,**kwargs):
print "OK EXIT!"
global_actions = {'SAVE':do_save,
'HINT':do_hint,
'QUIT':do_quit}
def go_north(*args,**kwargs):
print "You Go North"
def go_east(*args,**kwargs):
print "you go east"
def make_choice(prompt="ENTER COMMAND:",actions={},context_info={}):
choice = raw_input(prompt)
fn = actions.get(choice.upper(),lambda *a,**kw:sys.stdout.write("UNKOWN CHOICE!"))
return fn(some_context=context_info)
local_actions = {"NORTH":go_north,"EAST":go_east}
player_actions = dict(global_actions.items() + local_actions.items())
print "From Here You Can Go [North] or [East]"
result = make_choice(actions=player_actions,
context_info={"location":"narnia","player_level":5})
我不知道保存功能,但作为提示,您可以使用;
If raw_input == hint:
print "whatever you want here"
或者如果你想让提示根据你的位置而不同你可以为那个房间的提示设置一个变量并让它在每次你进入一个新房间时更新然后有:
if raw_input == "hint":
print hintvariable
如果这不起作用,那么对不起,我是新人。