Shifumi avec fonction

Résolu/Fermé
Nael11 - Modifié le 17 oct. 2021 à 18:28
Naell11 Messages postés 1 Date d'inscription dimanche 17 octobre 2021 Statut Membre Dernière intervention 19 octobre 2021 - 19 oct. 2021 à 21:27
Bonjour, je suis débutant en python et je suis en train d'essayer de faire un pierre feuille ciseau en utilisant des fonctions. Malheureusement lorsque j'exécute le code, il n'y a qu'en cas de victoire qu'un texte s'affiche. J'aimerai comprendre d'où viens le problème.
Merci d'avance.

Voici le code en question :

from random import randint
score_joueur = 0
score_ordi = 0


def joueur_pierre(choix_joueur, choix_ordi):
    if choix_joueur == 1:
        if choix_ordi == 3:
            global score_joueur
            score_joueur = score_joueur + 1
            print("Joueur : pierre", "Ordi : ciseau", "Victoire")
    if choix_joueur == 1:
        if choix_ordi == 2:
            global score_ordi
            score_ordi = score_ordi + 1
            print("Joueur : pierre", "Ordi : feuille", "Defaite")
    if choix_joueur == 1:
        if choix_ordi == 1:
            print("Joueur : pierre", "Ordi : pierre", "Egalite")


def joueur_feuille(choix_joueur, choix_ordi):
    if choix_joueur == 2:
        if choix_ordi == 1:
            global score_joueur
            score_joueur = score_joueur + 1
            print("Joueur : feuille", "Ordi : pierre", "Victoire")
    if choix_joueur == 2:
        if choix_ordi == 3:
            global score_ordi
            score_ordi = score_ordi + 1
            print("Joueur : feuille", "Ordi : ciseau", "Defaite")
    if choix_joueur == 1:
        if choix_ordi == 1:
            print("Joueur : feuille", "Ordi : feuille", "Egalite")
   

def joueur_ciseau(choix_joueur, choix_ordi):
    if choix_joueur == 3:
        if choix_ordi == 2:
            global score_joueur
            score_joueur = score_joueur + 1
            print("Joueur : ciseau", "Ordi : feuille", "Victoire")
    if choix_joueur == 3:
        if choix_ordi == 1:
            global score_ordi
            score_ordi = score_ordi + 1
            print("Joueur : ciseau", "Ordi : pierre", "Defaite")
    if choix_joueur == 1:
        if choix_ordi == 1:
            print("Joueur : ciseau", "Ordi : ciseau", "Egalite")


def manche(nombre):
    if score_joueur < nombre:
        if score_ordi < nombre:
            
            choix_joueur = int(input())
            choix_ordi = randint(1, 3)
            
            if choix_joueur == 1:
                joueur_pierre(choix_joueur, choix_ordi)
                
            if choix_joueur == 2:
                joueur_feuille(choix_joueur, choix_ordi)
                
            if choix_joueur == 3:
                joueur_ciseau(choix_joueur, choix_ordi)
                
            print(score_joueur, score_ordi)
            
            global a
            manche(a)
            
print("Combien de manche ?")
a = int(input())
manche(a)
A voir également:

2 réponses

jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 234
Modifié le 17 oct. 2021 à 20:53
Bonjour,

Déjà il faut que sur chaque saisie tu mettes un texte explicatif donc
a = int(input("Combien de manches ? "))
et
            choix_joueur = int(input("Votre jeu : pierre=1, feuille=2, ciseaux=3 ? "))


Puis ton code n'est pas logique, si le joueur choisit 1, donc joueur_pierre(), pourquoi retester qu'il a pris 1 dans la fonction. D'ailleurs sur 2 et 3 en fin tu testes 1 :-/

Puis pour faire une boucle, plutot dans manche() en fin rappeler la fonction elle même, il faudrait utiliser une boucle comme
while score_joueur < nombre and score_ordi < nombre:




0
Naell11 Messages postés 1 Date d'inscription dimanche 17 octobre 2021 Statut Membre Dernière intervention 19 octobre 2021
19 oct. 2021 à 21:27
Merci beaucoup de ta réponse j'ai pu trouvé mon erreur et la rectifier : )
0