Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin d'aide pour mastermind en Python :(

    13 janvier 2015 à 11:41:03

    Bonjour, pour mon projet de mi janvier, je dois construire un mastermind en python, d'abord en interface "console" ( ou les couleurs seront représentés par des chiffres) et ensuite en mode "interface graphique" pour afficher de vrais couleurs. J'ai déja codé la partie ou l'ordinateur demande à l'utilisateur de rentrer une couleur, une longueur et un nombre d'essais, en voici le code source: 

    from random import *
    
    def initialisation():
        couleur = 0
        longueur = 0
        essai = 0
        while couleur <= 1:
            couleur = eval(input("veuillez rentrer un nombre de couleurs: "))
        while longueur <= 1:
            longueur = eval(input("veuillez rentrer la longueur de la suite: "))
        while essai <= 1:
            essai = eval(input("veuillez rentrer un nombre d'essais: "))
        return couleur, longueur, essai
    
    
    def couleursaléatoires(clr,lgr):
        #return (randint(1,clr) for i in range(lgr))
        listcouleur = []
        y = clr
        while y > 0 :
            listcouleur.append(y)
            y = y - 1
        listjeu = []
        for i in range(lgr) :
            listjeu.append(randint(1, len(listcouleur)))
        return listjeu
    
    
    test = couleursaléatoires(6, 4)
    print (test)
    

    Mais la ou je bloque, c'est sur la partie ou on doit entrer  une fonction de choix prenant en paramètre le nombre de couleurs existantes et la longueur d’une suite. Cette fonction fait saisir au joueur une proposition de couleurs sous la forme d’un nombre entier et la retournera sous forme de liste. Par exemple si le joueur saisit 1232 on retournera [1,2,3,2]. On fera en sorte de s’assurer que la liste ait le bon nombre d’élément (i.e. égal à la longueur passée en paramètre) et que les couleurs soient correctes (i.e. entre 1 et le nombre de couleurs existantes). Tant que ces deux conditions ne sont pas vérifiées on recommencera la saisie. 

    Pouvez-vous m'aider ? merci d'avance

    Alexandre

    -
    Edité par alexfender 13 janvier 2015 à 11:43:44

    • Partager sur Facebook
    • Partager sur Twitter
      13 janvier 2015 à 11:50:55

      tu peux utiliser map pour creer t'es listes un petit exemple :

      nombre = 1232
      map(int, str(nombre))
      >>[1,2,3,2]



      -
      Edité par Myrens 13 janvier 2015 à 11:51:05

      • Partager sur Facebook
      • Partager sur Twitter
        13 janvier 2015 à 14:55:46

        Bonjour

        #!usr/bin/python
        # -*- coding:utf-8 -*-
        
        def isValid(color, colors):
            n = 0
            for elt in list(color):
                if elt in colors:
                    n += 1
            if n == 4:
                return True
        
        # la liste des couleurs valide :
        valid_colors = list("1234")
        		
        while True:
            x = input("\nentrer une combinaison\n")
            if isValid(x, valid_colors) and len(x) == 4:
                break
        
        print(x)



        • Partager sur Facebook
        • Partager sur Twitter
          13 janvier 2015 à 19:40:38

          Salut noobien, merci pour ta réponse mais ton code ne fonctionne pas la console me dit "invalid caractere in identifier" et ton "n" = 0 est en rouge
          • Partager sur Facebook
          • Partager sur Twitter
            13 janvier 2015 à 19:46:59

            ?? ça fonctionne parfaitement pour moi...
            • Partager sur Facebook
            • Partager sur Twitter
              13 janvier 2015 à 19:51:28

              Et n n'est pas entouré de guillemete dans mon code
              • Partager sur Facebook
              • Partager sur Twitter
                13 janvier 2015 à 20:01:35

                De guillemets. Pardon j'écris depuis mon téléphone. Le message d'erreur indique que tu as un caractère interdit dans le nom de ta variable. Si tu as recopié mon code tel quel normalement ça ne devrait pas être le cas.
                • Partager sur Facebook
                • Partager sur Twitter
                  13 janvier 2015 à 20:11:13

                  Ton code est il indépendant de celui que je vous ai fournis plus haut ? parce que pour nous il doit l'etre selon le sujet, on doit créer un premier fichier qui s'appelle initialisatio.py (qui est celui que je vous ai fournis dans mon premier poste) et dont la consigne pour ce fichier était d'écrire : 

                  1)Une fonction retournant les trois paramètres nécessaires au déroulement d’une partie : le nombre de couleurs existantes, la longueur de la suite à deviner et le nombre d’essai. Ces paramètres seront saisis par l’utilisateur et l’on fera en sorte que les valeurs qu’il rentre soient valides.

                  2)Une fonction d’initialisation prenant en paramètre le nombre de couleurs existantes et la longueur d’une suite, et qui retourne une suite de couleurs (sous forme de liste comme précisé précédemment) choisies aléatoirement. Cette liste devra être de la bonne longueur (i.e. égale à la longueur passée en paramètre) et les couleurs devront être correctes (i.e. entre 1 et le nombre de couleurs existantes).


                  Le problème est que déja ma partie 2) fonctionne, mais la 1) n'affiche pas les "veuillez rentrer un nombre de couleurs" et les autres choses que le joueurs doit normalement entrer au début en paramètres. Du coup quand je run le code que j'ai fourni dans mon premier post, je me retrouve avec une suite de chiffre aléatoires entre crochets et c'est tout. J'arrive vraiment pas à coder cette partie et je commence à m'arracher les cheveux ... :(

                  -
                  Edité par alexfender 13 janvier 2015 à 20:11:31

                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 janvier 2015 à 20:17:41

                    J'ai recopié lettre à la lettre ton code dans une nouvelle feuille shell et sa ne marche pas
                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 janvier 2015 à 20:56:03

                      Oui mon code ne fait que te donner une piste pour répondre à la question que tu as posée : boucler tant qu'un input ne correspond pas à une longueur donnée et ne respecte pas un motif donné

                      A toi de t'inspirer (ou pas) de ce bout de code (qui fonctionne) pour résoudre ton pb 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 janvier 2015 à 11:34:45

                        Ah ouais ok parce que moi j'y comprend rien j'ai jamais codé en python avant donc je galère bien come un porc pour comprendre et j'avance complètement à l'aveugle ...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 janvier 2015 à 11:45:41

                          Dans ce cas avant de se lancer tête baissée dans du code récupéré ici ou là, rien ne vaut un tutoriel

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Besoin d'aide pour mastermind en Python :(

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown