Un jeu de bataille spéciale en python
Résolu
BQuent1
Messages postés
16
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je dois faire une simulation d'un jeu de bataille en python.
Les règles sont un peu différente d'une partie normale:
- une carte noire est toujours plus forte qu'une rouge.
- si les deux cartes sont rouges, la plus forte est celle avec la plus petite valeur
- si les deux cartes sont noirs, la plus forte est celle avec la plus grande valeur.
Celui qui a la plus forte carte gagne les deux cartes mais ne les remet pas dans son paquet.
Si il y a égalité, les deux cartes sont écartées.
Et enfin la manche s'arrête quand les 2 joueurs sont arriver à la fin de leur paquet.
Voici le code que j'ai déjà fait:
Mon problème est que le joueur 1 gagne toujours toutes les cartes (gainj1 = 52 quand on exécute la fonction "partie()" ) et je ne comprends pas pourquoi.
En espérant que vous pourrez m'aider,
Merci d'avance.
Je dois faire une simulation d'un jeu de bataille en python.
Les règles sont un peu différente d'une partie normale:
- une carte noire est toujours plus forte qu'une rouge.
- si les deux cartes sont rouges, la plus forte est celle avec la plus petite valeur
- si les deux cartes sont noirs, la plus forte est celle avec la plus grande valeur.
Celui qui a la plus forte carte gagne les deux cartes mais ne les remet pas dans son paquet.
Si il y a égalité, les deux cartes sont écartées.
Et enfin la manche s'arrête quand les 2 joueurs sont arriver à la fin de leur paquet.
Voici le code que j'ai déjà fait:
from random import *
jeu = []
for c in ["pique", "coeur", "trèfle", "carreau"]:
for v in range (1,14):
carte = (v,c)
jeu.append(carte)
joueur1 = []
joueur2 = []
def distribution():
shuffle(jeu)
for i in range(0,52,2):
cartej1 = jeu[i]
joueur1.append(cartej1)
cartej2 = jeu[i+1]
joueur2.append(cartej2)
return joueur1, joueur2
gainj1 = []
gainj2 = []
cartes_ecartees = []
def partie():
for k in range(0, 26):
carte1 = joueur1[k]
carte2 = joueur2[k]
if carte1[1] == "pique" or "trèfle":
if carte2[1] == "coeur" or "carreau":
gainj1.append(carte1)
gainj1.append(carte2)
elif carte2[1] == "pique" or "trèfle":
if carte1[0] > carte2[0]:
gainj1.append(carte1)
gainj1.append(carte2)
elif carte1[0] < carte2[0]:
gainj2.append(carte1)
gainj2.append(carte2)
elif carte1[0] == carte2[0]:
cartes_ecartees.append(carte1)
cartes_ecartees.append(carte2)
elif carte1[1] == "coeur" or "carreau":
if carte2[1] == "pique" or "trèfle":
gainj2.append(carte1)
gainj2.append(carte2)
elif carte2[1] == "coeur" or "carreau":
if carte1[0] < carte2[0]:
gainj1.append(carte1)
gainj1.append(carte2)
elif carte1[0] > carte2[0]:
gainj2.append(carte1)
gainj2.append(carte2)
elif carte1[0] == carte2[0]:
cartes_ecartees.append(carte1)
cartes_ecartees.append(carte2)
return len(gainj1), len(gainj2)
Mon problème est que le joueur 1 gagne toujours toutes les cartes (gainj1 = 52 quand on exécute la fonction "partie()" ) et je ne comprends pas pourquoi.
En espérant que vous pourrez m'aider,
Merci d'avance.
3 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
pourquoi ne nous montres-tu pas le programme complet?
merci de bien spécifier le langage quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code-
Désolé mais je ne comprends pas, j'ai mis l'entièreté du programme que j'ai fais. Que manquerais t-il ?
Merci pour le conseil, je ne vois pas de manière de modifier la question, dois-je en recréer une ?- L'appel de la fonction partie() se fait dans la console pour moi... tout comme l'appel de la fonction distribution(). Savez vous quelle erreur elle provoque ?
d'accord merci, voici le code avec le bon language:
from random import * jeu = [] for c in ["pique", "coeur", "trèfle", "carreau"]: for v in range (1,14): carte = (v,c) jeu.append(carte) joueur1 = [] joueur2 = [] def distribution(): shuffle(jeu) for i in range(0,52,2): cartej1 = jeu[i] joueur1.append(cartej1) cartej2 = jeu[i+1] joueur2.append(cartej2) return joueur1, joueur2 gainj1 = [] gainj2 = [] cartes_ecartees = [] def partie(): for k in range(0, 26): carte1 = joueur1[k] carte2 = joueur2[k] if carte1[1] == "pique" or "trèfle": if carte2[1] == "coeur" or "carreau": gainj1.append(carte1) gainj1.append(carte2) elif carte2[1] == "pique" or "trèfle": if carte1[0] > carte2[0]: gainj1.append(carte1) gainj1.append(carte2) elif carte1[0] < carte2[0]: gainj2.append(carte1) gainj2.append(carte2) elif carte1[0] == carte2[0]: cartes_ecartees.append(carte1) cartes_ecartees.append(carte2) elif carte1[1] == "coeur" or "carreau": if carte2[1] == "pique" or "trèfle": gainj2.append(carte1) gainj2.append(carte2) elif carte2[1] == "coeur" or "carreau": if carte1[0] < carte2[0]: gainj1.append(carte1) gainj1.append(carte2) elif carte1[0] > carte2[0]: gainj2.append(carte1) gainj2.append(carte2) elif carte1[0] == carte2[0]: cartes_ecartees.append(carte1) cartes_ecartees.append(carte2) return len(gainj1), len(gainj2)
-