2015-12-09 1 views
2

Je suis en train de créer le jeu de dés sur le modèle de Yahtzee. Je dois donner 5 dés à l'utilisateur, et leur demander un nombre de 5 dés dont ils voudraient relancer. Pour l'exempleLes dés de congélation ont roulé?

Your roll is: 5 1 5 5 1 
Which dice should I roll again?: 234 
Your new roll is: 5 7 2 4 1 

Les 3 numéros du milieu changent parce que ceux-ci sont laminés en dés. Je n'ai aucune idée de comment le faire efficacement, je pourrais créer 240 instructions if, mais cela ne semble pas être la bonne façon de procéder.

Ceci est mon code jusqu'ici

import random 

def yahtzee(): 
    dice1 = random.randrange(1,6) 
    dice2 = random.randrange(1,6) 
    dice3 = random.randrange(1,6) 
    dice4 = random.randrange(1,6) 
    dice5 = random.randrange(1,6) 
    print('Your roll is: ' + ' ' + str(dice1) + ' ' + str(dice2) + ' ' + str(dice3) + ' ' + str(dice4) + ' ' + str(dice5)) 
    reroll = input('Which dice should I roll again?: ') 

Ce qui me donne le résultat:

yahtzee() 
Your roll is: 4 3 2 1 5 
Which dice should I roll again?: 

Je ne sais pas comment aller à faire les dés relancés, toute aide serait appréciée! Je vous remercie!

Répondre

2

En général, il est beaucoup plus facile de gérer les résultats stockés dans une liste:

def yahtzee(): 
    dice = [random.randrange(1, 6) for _ in range(5)] 
    print('Your roll is: ', *dice) 
    reroll = input('Which dice should I roll again?: ') 
    for i in reroll: 
     dice[int(i) - 1] = random.randrange(1, 6) 
    print('Your roll is: ', *dice) 

sortie Exemple:

Your roll is: 5 3 2 5 3 
Which dice should I roll again?: 12 
Your roll is: 1 2 2 5 3 
+0

Ah génial, merci beaucoup, figuré mon code était très inefficace, vraiment j'apprécie! –