I have a problem, I created a multiplication game in Python using functions but when I check if the user has enough points to change level, the point counter ("compteur") does not reset to 0. I'm a beginner so it It's quite possible that the error is stupid, but I don't understand... You can see this in Python tutor, but I tried adding "return compteur" but that doesn't work either...
Here is the function code:
def update (compteur) : global level if compteur == 20 : level =1 print("Niveau",level-1,"terminé. Passage au niveau",level,"!") compteur = 0 return compteur
And the whole code:
###############################################################################
# Importation de fonctions externes #
import random
###############################################################################
# Définitions locales de fonctions #
compteur=0
def calcul (max) :
'''
Cette fonction calcule une mutiplication avec des valeures aléatoires, elle
admet un seul paramètre :
- Maximum des valeures alétoires
Elle retourne le nombre saisi par l'utilisateur ainsi que le nombre calculé
par l'ordinateur.
'''
global compteur
global nb_user
global nb_result
valeur_1=random.randint(1, max)
valeur_2=random.randint(1, max)
nb_result=valeur_1*valeur_2
print(valeur_1,"*",valeur_2)
print("Debug =",nb_result,)
nb_user=int(input("Entrer votre réponse : \n"))
return nb_user
return nb_result
def verif (nb_user, nb_result) :
'''
Cette fonction vérifie si le résultat saisi par l'utilisateur est égale au
résultat attendu, elle admet donc deux paramètres :
- Nb_user
- Nb_result
Elle retourne l'indice de réussite.
'''
global compteur
if nb_user == nb_result :
compteur =1
print("Bonne réponse !")
else :
compteur-=1
print("Mauvaise réponse !")
def update (compteur) :
global level
if compteur == 20 :
level =1
print("Niveau",level-1,"terminé. Passage au niveau",level,"!")
compteur = 0
return compteur
###############################################################################
# Corps principal du programme
# Déclarations des variables
level=1
# Debut
print("Bienvenue dans le Jeu des multiplications !")
while level == 1 :
calcul(10)
print(compteur, level)
verif(nb_user, nb_result)
update(compteur)
while level == 2 :
calcul(20)
print(compteur, level)
verif(nb_user, nb_result)
update(compteur)
while level == 3 :
calcul(50)
verif(nb_user, nb_result)
update(compteur)
while level == 4 :
calcul(100)
verif(nb_user, nb_result)
update(compteur)
while level == 5 :
print("Bien joué ! Tu es venu à bout du jeu.")
Thank you in advance for your help !
CodePudding user response:
At each time, you call update(compteur) you have to assign back the value to compteur:
Replace:
update(compteur)
By:
compteur = update(compteur)
You have to indent back the return compteur:
def update (compteur) :
global level
if compteur == 20 :
level =1
print("Niveau",level-1,"terminé. Passage au niveau",level,"!")
compteur = 0
return compteur # Remove one tab
