Je crée un jeu et j'ai des fonctions qui prend des paramètres et renvoie une valeur. Je veux vérifier si le jeu est terminé. Le jeu finie lorsque bacs = [0, 0, 0, 0, 0] code>. J'ai tout essayé et je ne peux pas que le jeu soit vrai dans la fonction principale. Qu'est-ce que je fais mal?
3 Réponses :
Votre didendgame code> variable n'est pas mise à jour. Vous devez l'affecter à la fonction de contrôle: didEndGame = checkGameEnd(bins)
checkgameend (bacs) code> peut renvoyer true code> mais vous n'entrez pas à didendgame code>. Et aussi, vous n'avez pas à taper didendgame == false code> ou true code>. Changez votre boucle while avec ci-dessous Code Snippet:
corrections de votre code pour créer une version de travail
def checkGameEnd(bins):
return [0]*5 == bins # check for bins is all zeros
def displayGame(bins):
print('Bins:', *range(5))
print('Vals:', *bins)
def removeMatches(turnPlayer1_bin, turnPlayer1_matches, bins):
bins[turnPlayer1_bin] -= turnPlayer1_matches
def main():
# Initialize bins
bins = [7, 7, 7, 7, 7]
displayGame(bins)
player_1 = "Player 1"
player_2 = "Player 2"
while True:
turnPlayer1_bin = int(input(player_1 + ", which bin do you want to remove matches from?\t"))
turnPlayer1_matches = int(input(player_1 + ", how many matches will you remove from bin " + str(turnPlayer1_bin) + "?\t"))
removeMatches(turnPlayer1_bin, turnPlayer1_matches, bins)
displayGame(bins)
if checkGameEnd(bins):
print(player_2 + ", you win!")
break
turnPlayer2_bin = int(input(player_2 + ", which bin do you want to remove matches from?\t"))
turnPlayer2_matches = int(input(player_2 + ", how many matches will you remove from bin " + str(turnPlayer2_bin) + "?\t"))
removeMatches(turnPlayer2_bin, turnPlayer2_matches, bins)
displayGame(bins)
if checkGameEnd(bins):
print(player_1 + ", you win!")
break
main()
Veuillez afficher votre code de manière correctement formatée en parlant d'avantage des installations de formatage de la zone d'édition. Vous pourriez bénéficier de Comment déboguer de petits programmes a >. Vous ne posez pas vraiment une question ciblée tellement que dumping Buggy Code sur la pile débordement et dans l'espoir que quelqu'un d'autre le débogera pour vous.
Vous ne définissez pas didendgame. Vous avez besoin
didendgame = checkgameend (bacs) code>. Vous pouvez également simplifier Checkgameend àRetour ListOfbins == [0, 0, 0, 0, 0] code> par opposition à la vérification de chaque élément.