J'ai décidé de faire un jeu de base en Python 3.3 où le monstre et un trésor est généré individuellement sur un nombre de 1-100, et l'utilisateur a choisir un nombre. Le programme informera alors l'utilisateur s'il est trop proche ou trop haut ou s'il a touché quelque chose.Programme destiné à aller à une fonction, mais à la place suit essayer et sauf la boucle
J'ai fait une boucle d'essai avec un exception NameError (comme je suis sur Mac, ce serait ValueError pour Windows). Avant de demander quoi que ce soit, je voudrais partager avec vous le code que j'ai jusqu'à présent:
import time, random
def generateValues():
global treasurePos, monsterPos
while treasurePos != monsterPos:
treasurePos = random.randint(1, 100)
monsterPos = random.randint(1, 100)
print(treasurePos)
print(monsterPos)
def mainmenu():
time.sleep(0.5)
print("welcome to this game, press 1 to play or 2 to quit")
time.sleep(0.5)
try:
option = int(input("What would you like to do: "))
if option == (1):
time.sleep(0.5)
generateValues()
elif option == (2):
quit()
except NameError:
time.sleep(0.5)
print("please enter only 1 or 2")
mainmenu()
Si j'entre 1, mon plan original était pour le jeu de continuer et de générer les positons pour le trésor et la monstre. Ce que le programme fait, au contraire, est la boucle de retour à ceci:
except NameError:
time.sleep(0.5)
print("please enter only 1 or 2")
qui crée en outre une boucle infinie de « s'il vous plaît entrer seulement 1 ou 2 » - même quand je fais entrer 1.
Ma question est Donc, y a-t-il une commande simple ou complexe que je peux faire pour arrêter cette boucle et permettre au programme de continuer à la fonction 'generateValues'?
J'apprécierais n'importe quelle aide ou perspicacité que vous êtes disposé à partager.
Merci à l'avance, Leo
EDIT 1:
Karen Clark a ma boucle while et j'ai codé une solution alternative pour ci-dessous qui fonctionne:
def generateValues():
global treasurePos, monsterPos
treasurePos = 0
monsterPos = 0
treasurePos = random.randint(1, 3)
monsterPos = random.randint(1, 5)
if treasurePos == monsterPos:
generateValues()
else:
print(treasurePos)
print(monsterPos)
Je suis confus par la boucle while. Y a-t-il une raison pour laquelle vous essayez de générer les valeurs pour toujours? Sûrement une seule valeur aléatoire pour chacun fonctionnerait ... –
@Karen Clark Mon but pour la boucle while était de générer les valeurs jusqu'à ce qu'elles soient deux valeurs différentes. Si les mêmes valeurs sont générées pour les deux positions, le programme générera à nouveau des nombres différents. –
Je l'ai changé maintenant, regardez en bas du message original. –