IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Mastermind (problème de code)


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Mastermind (problème de code)
    Bonjour,

    J'ai soudainement eu envie de tenter de programmer un jeu style Mastermind en python, mais cela ne fonctionne pas pour une raison que je ne comprends pas.
    J'ai tenté de visualiser le fonctionnement du programme étape par étape via "pythontutor.com" mais cela n'a pas été très concluant...
    Le problème doit être évident mais je n'arrive pas à mettre le doigt dessus...
    Ca se verra dans mon code, mais je précise tout de même que je débute

    Merci d'avance !

    ***************************************************
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
    import random
     
    def demander_liste():
        print ('La combinaison cachée est :')
        L = input()
        return L
     
    def creer_liste():
        L = []
        for i in range(4):
            a = random.randint(1, 8)
            L.append(a)
        return L
     
     
    def mastermind(n=1):
        if n == 1:
            L = creer_liste()   #python détermine une liste de 4 couleurs/numéros au hasard
        else:
            L = demander_liste()      #un 2eme joueur donne la liste des couleurs/numéros
        compteur = 0
        R = 0                     #R est le nombre de numéros bien placés
        B = 0                     #B est le nombre de numéros mal placés mais présents dans la combinaison
        gagne = False
        while gagne == False:
            compteur += 1
            print('Insérez une combinaison')
            courant = input()
            R, B = 0, 0
            for i in range(4):
                if L[i] == courant[i]:               #C'est ici que le problème commence... 
                    R += 1
                for j in range(4):
                    if i != j:
                        if L[i] == courant[j]:
                            B += 1
            if R == 4:
                gagne = True
            else:
                print('bien placés :', R)
                print('mal placés :', B)
        return "Gagné en" + str(compteur) + "coups !"

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2014
    Messages : 25
    Points : 39
    Points
    39
    Par défaut RÉPONSE ET CORRECTION


    Le procédé n'est pas si mauvais mais il est difficile de recuperer un tuple ou une liste au travers d'un seul input(), il serait plus judicieux de l'utiliser pour chaque element du tableau. comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    #-*- coding: utf-8 -*-
    __author__ = 'sphinx'
     
    import random
     
     
    def demander_liste():
        liste = []
        for i in range(4):
            print("entrez la valeur n°: %s" % i)
            liste.append(int(input()))
            # il faudrait normalement songer a verifier le type de la variable
        return liste
     
    def creer_liste():
        liste = []
        for i in range(4):
            a = random.randint(1, 8)
            liste.append(a)
        return liste
     
     
    def mastermind():
     
        L = creer_liste()   # python détermine une liste de 4 couleurs/numéros au hasard
        compteur = 0
        gagne = False
        while not gagne:
            compteur += 1
            print('Insérez une combinaison de 4 valeurs')
            courant = demander_liste()
            R, B = 0, 0
            for i in range(4):
                if L[i] == courant[i]:              # C'est ici que le problème commence...
                    R += 1
                for j in range(4):
                    if i != j and L[i] == courant[j]:
                        B += 1
            if R == 4:
                gagne = True
            else:
                print('bien placés :', R)
                print('mal placés :', B)
        return "Gagné en" + str(compteur) + "coups !"
     
     
    mastermind()
    et le test comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Insérez une combinaison de 4 valeurs
    entrez la valeur n°: 0
    4
    entrez la valeur n°: 1
    5
    entrez la valeur n°: 2
    1
    entrez la valeur n°: 3
    3
    bien placés : 1
    mal placés : 2
    Insérez une combinaison de 4 valeurs
    entrez la valeur n°: 0
    tu peux t'aider de print pour connaitre le résultat

  3. #3
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Citation Envoyé par ROWLINX Voir le message
    il est difficile de recuperer un tuple ou une liste au travers d'un seul input()
    pas tant que ça, il suffit de mettre un truc du genre courant = input().split()

    par contre dans ton code tu retournes une nouvelle liste à chaque fois que la fonction demander_liste() est appelée, ça ne conviendra pas, au minimum il faudrait virer la ligne 9 et passer la liste en question en paramètre de la fonction, l'initialisation éventuelle devra se faire dans la fonction appelante

Discussions similaires

  1. problème de code avec un tableau
    Par richard038 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/05/2006, 18h35
  2. problème de code javascript pour une vue 360°
    Par tomguiss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2006, 23h50
  3. [POO] Problème de code PHP avec Internet Explorer
    Par bzoler dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 12h00
  4. Problème de code besoin d un petit depannage
    Par rakengoule dans le forum MFC
    Réponses: 3
    Dernier message: 10/10/2005, 17h25
  5. Probléme de code non portable
    Par Stany dans le forum Windows
    Réponses: 2
    Dernier message: 23/08/2005, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo