Bonjour je suis nouveau à Python et c'est mon premier poste de débordement de pile, alors je m'excuse si cette question a été répondue ailleurs (je ne suis pas tout à fait sûr de la recherche de ce sujet, n'hésitez pas à déposer un lien s'il est).
Je crée un jeu d'aventure et je souhaite que l'utilisateur choisit différents chemins dans une maison. p>
Je veux que l'utilisateur puisse voyager entre la pièce A et la chambre B, mais je veux que Différent dialogue apparaisse en fonction du nombre de fois qu'un utilisateur est entré dans la chambre A ou la chambre B. Si sa La première fois, je veux que la fonction soit imprimée (option 1), mais si l'utilisateur entre> 1 fois, je souhaite que la fonction soit imprimée (option 2) p>
J'ai compris comment parcourir et Entrez entre les 2 chambres, mais je ne reçois pas différentes options de dialogue si je saisis l'une des pièces> 1 fois avec mon code d'incrément actuel. Cela a-t-il à voir avec le fait que je sortais de la fonction Room_A quand je viens à la chambre_b '? P>
Toute aide serait grandement appréciée! P>
def room_A():
room_A_count = 0
# - if this is the first time the user enters the room, this code runs...
if room_A_count == 0:
print ("You enter room A")
print ("What would you like to do?")
print ("1. Enter room B")
print ("2. nothing")
room_A_choice = input("Choice: ")
if room_A_choice = "1":
room_A_count += 1
# - travel to room B
room_B()
elif room_A_choice == "2":
print ("You do nothing")
# - if the user travels back from Room B to Room A, it prints this message...
else:
print ("You enter room A again")
3 Réponses :
Une chose que je dirais, c'est qu'un bon principe suivant est généralement pour les fonctions de se comporter de la même manière chaque fois que vous les appelez. Avec cet étant dit, un travail autour pourrait être de stocker un C'est un peu hacky et semble que cela pouvait se casser facilement, alors je proposerais une solution orientée objet - P> room_a_count code> en tant que variable globale. Puis transmettez-le dans la fonction comme argument et incrémentation à chaque fois. class RoomA:
def __init__(self):
self.room_A_count = 0
def enter(self):
if self.room_A_count == 0:
print ("You enter room A")
print ("What would you like to do?")
print ("1. Enter room B")
print ("2. nothing")
room_A_choice = input("Choice: ")
if room_A_choice = "1":
self.room_A_count += 1
# - travel to room B
room_B()
elif room_A_choice == "2":
print ("You do nothing")
else:
print ("You enter room A again")
Merci pour votre réponse rapide! Je pense que c'est la route qui me sert de but. Juste une question de suivi. Comment activez-vous le «CLASS SOCKA» de sorte que cela commence le cycle d'arrière-plan de l'utilisateur de voyager entre les chambres?
Donc, vous auriez besoin d'instancier un objet de la classe a = rooma () code>. Ensuite, vous pouvez exécuter la méthode via A.enter () code>. Si vous n'êtes pas familier avec OOP, peut-être Ce peut vous obtenir a débuté.
Génial Merci d'avoir pris le temps de vous aider et de me signaler dans la bonne direction pour une éducation ultérieure!
Je suis incapable de commenter, alors je m'excuse si je comprends votre question à droite, tout ce que vous aurez besoin de faire est d'ajouter une déclaration si elle vérifie la chambre_a_choice
Merci pour votre réponse! C'est actuellement la méthode que j'utilise et cela ne fonctionne pas comme vous le souhaitez. Le "Compte de la chambre" n'incrément pas lorsque vous voyagez entre la pièce A et la chambre B
Vous pouvez utiliser Fonction Variables statiques < / a>
Merci pour votre réponse rapide! J'ai essayé cette méthode et j'ai pu obtenir un message alternatif la deuxième fois que j'ai entrée dans la pièce A. (j'ai modifié mon code pour permettre à l'utilisateur d'entrer de nouveau la salle B) mais était incapable de passer ensuite de retour à la salle B. Cela a fonctionné super pour une réponse alternative ponctuelle si
@ jwross - Vous ne savez pas ce que vous vouliez dire par "(j'ai modifié mon code pour permettre à l'utilisateur d'entrer dans la chambre B à nouveau) mais était incapable de revenir à la salle B". Dites-vous que si vous entrez B à partir d'A, alors vous souhaitez avoir la possibilité d'entrer à nouveau de la saisie de B à partir d'un (i.e. Execute Code où room_a.room_a_count == 0)?
Désolé que ce n'était pas clair, tout ce que je voulais dire, j'ai ajouté une deuxième fonction (nommée room_b ()) presque identique à la première, donc je pouvais exécuter la fonction room_a (), puis sélectionnez le choix 1 à voyager à la salle de fonctionnement Room_B (), puis sélectionnez Choix 1 Encore une fois pour voyager à la salle de fonctionnement (), d'avant en arrière. J'ai essayé votre code mais cela ne m'a pas permis de "voyager" entre les chambres et imprimer des sorties différentes en fonction du nombre de fois que j'avais déjà visité Room_A ou Room_B. Faites-moi savoir si cela efface toute confusion ou si j'ai besoin d'étudier le vocabulaire de Python plus :)