Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction Alphabet / jeu d'echecs

Fonctions

    19 avril 2018 à 18:46:25

    Salutations,

    Je suis actuellement en train de programmer (d'essayer) un jeu d'échecs pour un projet scolaire. J'arrive au problème suivant je dois créer une fonction qui aux lettres (a, b, c, d, e, f, g, h,) associe les valeurs, 0, 1, 2, 3... pour les traiter dans d'autres fonctions. Pour info, les lettres correspondent aux colonnes de l'échiquier. Le problème est le suivant, je n'arrive pas à faire en sorte que ma fonction me renvoie une valeur quand je lui donne une lettre. J'ai pour l'instant le code suivant :

    function Convertisseur(colonne) {
    
        var colonne = ["a", "b", "c", "d", "e", "f", "g", "h"];
    
        for (i = 0; i <= 8; i++) {
    
            colonne[i];
        }
    
        return colonne;
    }



    qui renvoie cela:

    J'aimerais pouvoir écrire par exemple

    Conversisseur(a);

    et recevoir en réponse 0.

    Merci de votre aide à bientôt j'espère :)


    -
    Edité par ltheo2029 19 avril 2018 à 19:11:34

    • Partager sur Facebook
    • Partager sur Twitter
      19 avril 2018 à 19:16:17

      Est-il vraiment nécessaire de créer une fonction alors que "abcdefgh".indexOf("c") donne la place de c dans la chaîne précitée...

      A toutes fins utiles un jeu très vieux script d'Echec qui pourrait vous inspirer...

      -
      Edité par 007julien 19 avril 2018 à 19:16:56

      • Partager sur Facebook
      • Partager sur Twitter
        19 avril 2018 à 19:19:16

        Salut,

        il y a une méthode en JS qui fait exactement ce dont tu as besoin :

        ["a", "b", "c", "d", "e", "f", "g", "h"].indexOf("c");

        Démo: https://codepen.io/anon/pen/jxEvOK

        Edit : ah, coiffé au poteau :p



        -
        Edité par Syltaen 19 avril 2018 à 19:20:47

        • Partager sur Facebook
        • Partager sur Twitter
          19 avril 2018 à 20:17:39

          Merci à vous, je ne connaissais pas la méthode étant donné que je viens de débuter.
          J'essaie et je posterai ce qu'il en est.

          Est ce que le IndexOf permet d'effectuer la manipulation dans l'autre sens ? C'est à dire repasser du zero pour avoir "a" ?

          -
          Edité par ltheo2029 19 avril 2018 à 20:32:59

          • Partager sur Facebook
          • Partager sur Twitter
            19 avril 2018 à 20:49:51

            let lettre = String.fromCharCode( nombre + 97)
            
            let nombre = lettre.charCodeAt(0) - 97



            • Partager sur Facebook
            • Partager sur Twitter
              19 avril 2018 à 20:57:55

              La manip de GannonN est plus optimisée (elle évite l'allocation d'un tableau à chaque appel) et fonctionne dans les deux sens.

              -
              Edité par Genroa 19 avril 2018 à 20:58:28

              • Partager sur Facebook
              • Partager sur Twitter
              /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
                23 avril 2018 à 10:56:53

                Merci à vous, j'ai essayé la dernière méthode et ça fonctionne très bien :)

                function casesPossiblesDuFou(echiquier, posFou) { //Fonction du FOU
                
                    const coords = coordonneesEchiquier(posFou);
                    let cases = [];
                    let ligne = coords.ligne;
                    let colonne = coords.colonne;
                
                
                    colonne = colonne.charCodeAt(0) - 97; //Passe la colonne de lettre à nombre
                
                
                    for (ligne = ligne; ligne <= 8; ligne++) { //Incrémentation pour la ligne vers le haut
                
                
                        colonne = String.fromCharCode(colonne + 97); //Passe la colonne de nombre à lettre
                        cases.push(`${colonne}${ligne}`); //Les coordonnées rentrent dans la cases
                        colonne = colonne.charCodeAt(0) - 97; //Les coordonnées repassent en valeurs numériques pour etre incrémentées
                        colonne++;
                    }

                et voilà ce que ça donne



                • Partager sur Facebook
                • Partager sur Twitter

                Fonction Alphabet / jeu d'echecs

                × 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