Я пытаюсь создать текстовую игру на Python, однако код может очень быстро выйти из-под контроля, если я не смогу сделать что-то в одной строке.
Во-первых, исходный код:
from sys import exit
prompt = "> "
inventory = []
def menu():
while True:
print "Enter \"start game\" to start playing."
print "Enter \"password\" to skip to the level you want."
print "Enter \"exit\" to exit the game."
choice = raw_input(prompt)
if choice == "start game":
shell()
elif choice == "password":
password()
elif choice == "exit":
exit(0)
else:
print "Input invalid. Try again."
def password():
print "Enter a password."
password = raw_input(prompt)
if password == "go back":
print "Going to menu..."
else:
print "Wrong password. You are trying to cheat by (pointlessly) guess passwords."
dead("cheating")
def shell(location="default", item ="nothing"):
if location == "default" and item == "nothing":
print "Starting game..."
# starter_room (disabled until room is actually made)
elif location != "default" and item != "nothing":
print "You picked up %s." % item
inventory.append(item)
location()
elif location != "default" and item == "nothing":
print "You enter the room."
location()
else:
print "Error: Closing game."
def location():
print "Nothing to see here."
# Placeholder location so the script won't spout errors.
def dead(reason):
print "You died of %s." % reason
exit(0)
print "Welcome."
menu()
Во-первых, объяснение того, как моя игра в основном работает.
В игре есть «оболочка» (где ввод сделан), которая получает информацию и отправляет информацию в разные «комнаты» в игре, а также сохраняет инвентарь. Он может получить два аргумента: местоположение и возможный предмет, который будет добавлен в инвентарь. Тем не менее, строки 40-42 (первый блок elif в «оболочке») и строка 43-45 (последний блок elif в «оболочке») должны вернуться в любое место, где было местоположение (строки 42 и 45, чтобы быть точный). Я пробовал "% s ()% location", но это не работает, кажется, работает только при печати чего-либо или чего-то такого.
Есть ли способ сделать это? Если нет, то даже написание движка для этой игры было бы кошмаром. Или мне пришлось бы создать совершенно другой движок, который, я думаю, был бы намного лучше в таком случае.
Извините, если я допустил какие-либо ошибки, первый вопрос / сообщение.