Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème entre une liste et un input

    6 décembre 2015 à 19:17:20

    Bonsoir Tout le monde !

    Svp, j'ai un peu besoin d'aide, j'ai actuellement le projet de faire un jeu d'échec sur python3.0,

    mais je rencontre un problème ( que je ne sais pas résoudre :/ étant un programmeur débutant )

    alors voici mon programme :

    #Creation d'une liste qui sera sous forme de tableau
    
    board=[]
    
    #association nom du pion avec son unicode
    
    roi_b="\u2654"
    
    dame_b="\u2655"
    
    tour_b="\u2656"
    
    fou_b="\u2657"
    
    cavalier_b="\u2658"
    
    pion_b="\u2659"
    
    case_b="\u25FD"
    
    roi_n="\u265A"
    
    dame_n="\u265B"
    
    tour_n="\u265C"
    
    fou_n="\u265D"
    
    cavalier_n="\u265E"
    
    pion_n="\u265F"
    
    case_n="\u25A0"
    
    #Creation de listes contenant les informations de chaque liste
    
    z=[" ","1","2","3","4","5","6","7","8"]
    
    a=["a","\u265C","\u265E","\u265D","\u265A","\u265B","\u265D","\u265E","\u265C"]
    
    b=["b","\u265F","\u265F","\u265F","\u265F","\u265F","\u265F","\u265F","\u265F"]
    
    c=["c","\u25FD","\u25FE","\u25FD","\u25FE","\u25FD","\u25FE","\u25FD","\u25FE"]
    
    d=["d","\u25FE","\u25FD","\u25FE","\u25FD","\u25FE","\u25FD","\u25FE","\u25FD"]
    
    e=["e","\u25FD","\u25FE","\u25FD","\u25FE","\u25FD","\u25FE","\u25FD","\u25FE"]
    
    f=["f","\u25FE","\u25FD","\u25FE","\u25FD","\u25FE","\u25FD","\u25FE","\u25FD"]
    
    g=["g","\u2659","\u2659","\u2659","\u2659","\u2659","\u2659","\u2659","\u2659"]
    
    h=["h","\u2656","\u2658","\u2657","\u2654","\u2655","\u2657","\u2658","\u2656"]
    
    #Creation d'une liste contenant toutes les listes
    
    Chiffre=[z,a,b,c,d,e,f,g,h]
    
    #Creation du tableau
    
    for i in range(0,9):
    
    for column in range(1):
    
    board.append(Chiffre[i])
    
    #association de chaque ligne entre elle dans la liste:
    
    def print_board(board):
    
      for column in board:
    
        print(" ".join(column))
    
     
    
    print_board(board)
    
    pion=list(input("Coordonnées du pion et nouvelles coordonnées")))
    
    A=pion[0]+"["+pion[1]+"]"
    
    B=pion[2]+"["+pion[3]+"]"
    
    print(A)
    
    print(B)
    
    for case_n in B:
    
    B=A
    
    for case_b in B:
    
    B=A
    
    print(B)



    Le seul problème c'est lorsque j'"input" les coordonnées par exemple a2c4, il ne reconnait pas a[2] en tant qu'objet de la liste mais en tant que texte , comment puis-je résoudre ce problème ? 

    Merci à vous !

    -
    Edité par gervan 6 décembre 2015 à 19:32:29

    • Partager sur Facebook
    • Partager sur Twitter
      6 décembre 2015 à 19:24:59

      Bonsoir,

      Pourrais tu remettre en forme ton programme en l'écrivant dans la section code de python s'il te plait ? ;)

      et en sélectionnant le language Python parce que l'indexation n'est pas bonne :

      -
      Edité par Kasimashi 6 décembre 2015 à 19:27:54

      • Partager sur Facebook
      • Partager sur Twitter
        6 décembre 2015 à 19:32:54

        Voila voila, désole ^^'
        • Partager sur Facebook
        • Partager sur Twitter
          6 décembre 2015 à 19:42:23

          Auriez vous un tableau qui explique votre programme ? car j'ai un peu de mal à me repérer :)

          Je ne suis pas expert en echec :p ni en python d’ailleurs mais je vais essayer de vous aider

          Que représente ces nombres? : \u2656","\u2658","\u2657","\u2654","\u2655","\u2657","\u2658","\u2656

          -
          Edité par Kasimashi 6 décembre 2015 à 19:43:34

          • Partager sur Facebook
          • Partager sur Twitter
            6 décembre 2015 à 19:52:44

            hmm alors en faite , le tableau met en position les pions d'echecs qui sont représentés par les codes unicodes :"\u2656","\u2658","\u2657","\u2654","\u2655","\u2657","\u2658","\u2656"

            Merci quand meme de ton aide :p

            • Partager sur Facebook
            • Partager sur Twitter
              6 décembre 2015 à 20:06:50

              Comment faites vous la conversion des codes unicodes pour les afficher dans votre fonction print_board ?

              A vrai dire je n'arrive pas à lancer votre programme pour l'essayer ;) (la conversion des codes Unicode n'est pas bonne)

              Avez vous quelque chose du style au début de programme?

              #!/usr/bin/env python
              # -*- coding: latin-1 -*-
              • Partager sur Facebook
              • Partager sur Twitter
                6 décembre 2015 à 20:08:44

                Non Non, j'ai rien, mais chez moi les codes unicode sont directement "printé" dans mon tableau et sa me donne les bonnes pièces, le seul problème que je rencontre c'est avec le input :/
                • Partager sur Facebook
                • Partager sur Twitter
                  7 décembre 2015 à 15:48:51

                  Bonjour,

                  Chiffre (nom très bizarre, mais soit) est une liste de listes. Si tu accèdes au deuxième éléments, tu obtiendras une ligne de ton tableau. Et ensuite tu peux sélectionner un élément, qui te donnera la colonne de cette ligne. Autrement dit, on accède aux éléments en renseignant d'abord leur indice pour leur ligne, suivit de leur indice pour leur colonne. Chiffre[ligne][colonne].

                  Le fait que l'utilisateur entre un a pour la colonne doit être traduit en un indice équivalent. a étant la première colonne, et b la deuxième, etc, on voit qu'il y a une relation assez facile. Tu pourrais te faire un fonction qui prend en entrée la lettre et retourne l'indice (nombre) correspondant.

                  Tu devrais séparer la représentation mémoire de ton échiquier de sa représentation graphique. L'échiquier ne devrait être réduit qu'aux 64 cases qui le composent. Les lettres et chiffres autour ne doivent pas faire partie de cette représentation. C'est la responsabilité de ta fonction print_board de d'abord afficher des lettres, ensuite de commencer par un chiffre (le 1) et de mettre la première ligne de l'échiquier, etc. Ca te permettra de manipuler ton échiquier plus aisément.

                  Toujours dans la même idée, il n'est pas très aisé de manipuler les éléments de l'échiquier en utilisant les codes unicodes. Ce que je veux dire c'est que tu pourrais simplement avoir une représentation en mémoire qui soit plus parlante pour toi, le programmeur. Imagine que tu nommes tes pièces avec un tuple comprenant le type de pièce et sa couleur. Tu pourrais avoir ("cavalier", "blanc") ou encore ("pion", "noir"). Ton remplis ton tableau avec ces tuples pour les cases occupées par une pièce, et juste la valeur None là où il n'y a pas de pièces. Ta fonction print_board elle lit ces données et convertit la valeur trouvée par le caractère unicode adéquat. Pour ce faire, tu pourrais avoir un dictionnaire comprenant en clé la couleur (noir et blanc) et en valeur un autre dictionnaire qui a en clé le nom de la pièce et en valeur le caractère unicode que tu veux utiliser pour représenter la pièce.

                  conversion_unicode = {
                      "noir": {"pion": "\u265F", "tour": "\u265C"}
                      "blanc": {"pion": "\u2659", "tour": "\u2656"}
                  }
                  piece = ("pion", "blanc")
                  type_piece, couleur = piece
                  symbole = conversion_unicode[couleur][type_piece]
                  

                  Il faut essayer de toujours séparer la représentation interne de l'échiquier de sa représentation graphique.

                  -
                  Edité par Dan737 7 décembre 2015 à 15:50:31

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Problème entre une liste et un input

                  × 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