Programmer un jeu de dés sur Python
Résolu
JNHouchat
-
JNHouchat -
JNHouchat -
Bonjour,
Je suis docteur en neurobiologie et actuellement en poste à Buenos Aires. Pour faire ce que je dois faire, j'ai commencé à m'intéresser à la programmation et suis actuellement un cours de Python. Je début donc !
Le dernier exercice qu'on m'a donné à faire me donne du fil à retordre. En effet, les argentins jouent au Diez-mil, un jeu où on lance un dé n fois et si sur ces n lancers, on tombe une seule fois sur 6, on a perdu.
(1) La première étape de l'exo a été de créer une fonction lancer_unique, j'ai donc fait ça...
import random
def lancer_unique():
return random.randint(1,6)
resultat_1=lancer_unique()
print(resultat_1)
... jusque là, pas de souci.
(2) Ensuite, il fallait créer une fonction pour n lancers...
liste_1=[ ]
n=random.randint(1,8)
def lancer_multiple(n):
i=0
while i < n:
rep= lancer_unique()
i=i+1
liste_1.append(rep)
return liste_1
resultat_2=lancer_multiple(n)
print(resultat_2)
... ça m'a pas l'air trop mal non plus.
(3) Puis il fallait dire si c'était une série de lancers gagnante (True) ou s'il y avait un 6 dans la série (False)...
def gagne_ou_perd(liste_1):
rep2=True
for i in range (0,len(liste_1),1):
if liste_1[i]==6:
rep2 = False
return rep2
resultat_3=gagne_ou_perd(liste_1)
print(resultat_3)
... Jusqu'ici, tout a bien fonctionné.
(4) C'est ICI QUE JE SECHE ! Il faut maintenant imaginer une fonction multijouer(k,n) où k est le nombre de joueurs. Cette fonction doit renvoyer une liste indiquant pour chaque joueur "gagné" ou "perdu". J'ai donc d'abord voulu créer une liste finale contenant les séries de chaque joueur avant d'attribuer des "gagné" ou "perdu", j'ai fait ça pour le moment mais ça me sort une liste finale contenant des liste_1 identiques, comme si chaque joueur avait fait exactement la même série...
k=random.randint(2,4)
liste_finale=[ ]
def jouer_a_plusieurs(k,n):
i=1
while i<=k:
chaque_joueur=lancer_multiple(n)
i=i+1
liste_finale.append(chaque_joueur)
return liste_finale
resultat_4=jouer_a_plusieurs(k,n)
print(resultat_4)
... j'imagine qu'il y a un moyen d'utiliser les fonctions précédemment définies mais je ne vois pas comment.
Un coup de main serait donc super bienvenu, merci :)
Je suis docteur en neurobiologie et actuellement en poste à Buenos Aires. Pour faire ce que je dois faire, j'ai commencé à m'intéresser à la programmation et suis actuellement un cours de Python. Je début donc !
Le dernier exercice qu'on m'a donné à faire me donne du fil à retordre. En effet, les argentins jouent au Diez-mil, un jeu où on lance un dé n fois et si sur ces n lancers, on tombe une seule fois sur 6, on a perdu.
(1) La première étape de l'exo a été de créer une fonction lancer_unique, j'ai donc fait ça...
import random
def lancer_unique():
return random.randint(1,6)
resultat_1=lancer_unique()
print(resultat_1)
... jusque là, pas de souci.
(2) Ensuite, il fallait créer une fonction pour n lancers...
liste_1=[ ]
n=random.randint(1,8)
def lancer_multiple(n):
i=0
while i < n:
rep= lancer_unique()
i=i+1
liste_1.append(rep)
return liste_1
resultat_2=lancer_multiple(n)
print(resultat_2)
... ça m'a pas l'air trop mal non plus.
(3) Puis il fallait dire si c'était une série de lancers gagnante (True) ou s'il y avait un 6 dans la série (False)...
def gagne_ou_perd(liste_1):
rep2=True
for i in range (0,len(liste_1),1):
if liste_1[i]==6:
rep2 = False
return rep2
resultat_3=gagne_ou_perd(liste_1)
print(resultat_3)
... Jusqu'ici, tout a bien fonctionné.
(4) C'est ICI QUE JE SECHE ! Il faut maintenant imaginer une fonction multijouer(k,n) où k est le nombre de joueurs. Cette fonction doit renvoyer une liste indiquant pour chaque joueur "gagné" ou "perdu". J'ai donc d'abord voulu créer une liste finale contenant les séries de chaque joueur avant d'attribuer des "gagné" ou "perdu", j'ai fait ça pour le moment mais ça me sort une liste finale contenant des liste_1 identiques, comme si chaque joueur avait fait exactement la même série...
k=random.randint(2,4)
liste_finale=[ ]
def jouer_a_plusieurs(k,n):
i=1
while i<=k:
chaque_joueur=lancer_multiple(n)
i=i+1
liste_finale.append(chaque_joueur)
return liste_finale
resultat_4=jouer_a_plusieurs(k,n)
print(resultat_4)
... j'imagine qu'il y a un moyen d'utiliser les fonctions précédemment définies mais je ne vois pas comment.
Un coup de main serait donc super bienvenu, merci :)
Configuration: Windows / Chrome 98.0.4758.102
A voir également:
- Jeu de dé python
- 94 jeu - Télécharger - Puzzle & Réflexion
- Citizen code python avis - Accueil - Outils
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeux de moto: jeu de course 3d - Télécharger - Course
- Jeu zuma - Télécharger - Jeux vidéo
5 réponses
Bonjour
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
bonjour,
Si tu veux comprendre ce que fait ton programme, ajoute des print().
Pour commencer, ajoute
Si tu veux comprendre ce que fait ton programme, ajoute des print().
Pour commencer, ajoute
print(liste_finale)juste après
liste_finale.append(chaque_joueur).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question