Un jeu de bataille spéciale en python

Résolu/Fermé
BQuent1 Messages postés 14 Date d'inscription dimanche 16 décembre 2018 Statut Membre Dernière intervention 31 octobre 2020 - Modifié le 30 oct. 2020 à 23:14
yg_be Messages postés 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 - 31 oct. 2020 à 13:09
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 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 Ambassadeur 1 568
30 oct. 2020 à 23:18
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 dimanche 16 décembre 2018 Statut Membre Dernière intervention 31 octobre 2020
30 oct. 2020 à 23:37
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 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 1 568 > BQuent1 Messages postés 14 Date d'inscription dimanche 16 décembre 2018 Statut Membre Dernière intervention 31 octobre 2020
31 oct. 2020 à 10:34
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 dimanche 16 décembre 2018 Statut Membre Dernière intervention 31 octobre 2020 > yg_be Messages postés 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025
31 oct. 2020 à 10:47
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 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 1 568 > BQuent1 Messages postés 14 Date d'inscription dimanche 16 décembre 2018 Statut Membre Dernière intervention 31 octobre 2020
31 oct. 2020 à 11:56
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 dimanche 16 décembre 2018 Statut Membre Dernière intervention 31 octobre 2020 > yg_be Messages postés 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025
31 oct. 2020 à 12:05
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