Un jeu de bataille spéciale en python

Résolu
BQuent1 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 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:

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.
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 
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
0
BQuent1 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583 > BQuent1 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
il manque l'appel à la fonction partie(). chez moi, cet appel provoque une erreur.
pas utile de modifier la question, tu peux éventuellement montrer le code dans un commentaire.
0
BQuent1 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
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)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583 > BQuent1 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
montre alors comment tu fais ces appels: comment pourrions nous deviner ce que tu fais dans la console?
il est préférable de les inclure dans le code partagé.
0
BQuent1 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
C'est vrai désolé, j'écris simplement le nom de la fonction dans la console pour qu'elle s'éxecute:

>>>distribution()

ou
>>>partie()
0