Je bricoler avec un jeu de ma propre création et j'ai rencontré ce problème. Je fais le jeu dans un style de fiction très interactif mais je ne peux pas faire raw_input appeler une fonction comme take sword
à take(sword, room)
pour l'enlever de room
et en inventory
. Tout d'abord, voici ce que j'utilise le jeu pour appeler appeler en permanence la raw_input
:comment faire un raw_input appeler une fonction
GameOn=True
while GameOn==True:
a=raw_input("C:\>")
a=a.lower()
if a=="look":
look()
suivant est les fonctions:
def take(item,room):
if item in tools:
if item[0] in room:
room.remove(item[0])
inventory.append(item[1])
print "taken"
else:
print item, "doesn't exist in this game"
def look(room):
place=areas[room]
for i in place:
print i
Et maintenant pour les listes:
sword=["There is a sword here", "sword"]
room=["There is a table in the corner", sword[0]]
inventory=[]
areas=[room,bedroom,living_room]
tools=[sword, shield, axe]
tools
est là pour montrer ce qui est dans le jeu et peut être pris. areas
et noun
a plus d'un élément dans la liste, car un jeu avec une pièce et un élément est ennuyeux, donc tout ignorer dans noun
et areas
ce n'est pas sword
ou room
. La raison pour laquelle l'épée a deux listes est donc apparaît dans room
tandis que sword[1]
apparaît dans inventory
. Ex.
print inventory
"sword"
look(room)
"There is a table in the corner"
"There is a sword here"
Et comment il va chercher dans le jeu:
C:\>look
"There is a table in the corner"
"There is a sword here"
Je peux obtenir take(sword, room)
à travailler (ci-dessous), donc je sais que ce n'est pas le code:
>>>room=["There is a table in the corner, sword[0]]
>>>inventory=[]
>>>look(room)
>"There is a table in the corner"
>"There is a sword here"
>>>print inventory
>
>>>take(sword, room)
>>>look(room)
>"There is a table in the corner"
>>>print inventory
>"sword"
J'ai ajouté ' >>> 'pour montrer ce qu'est une variable ou l'appel d'une fonction et'> 'pour montrer la réponse.
Maintenant que cela est couvert, que je réécris une partie de mon code, je fais quelque chose de mal dans le raw_input
, je comprends mal les capacités de raw_input
, ou sinon comment puis-je take sword
de travailler?
Votre boucle principale ne prend jamais les appels, comme son nom l'indique. raw_input vous donne juste l'entrée, vous devez écrire du code pour l'analyser, puis appeler les bits pertinents du reste de votre programme – pvg