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

JavaScript Discussion :

Script lié aux échecs


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Script lié aux échecs
    Bonjour,
    Je suis amateur d'échecs compétent en informatique mais incompétent en programmation javascript !
    Voilà le problème à résoudre :
    Nous utilisons un systeme de notation de partie (fichier texte) qui utilise l'initiale de la pièce (R pour roi...) or le fichier texte standard accepte uniquement les initiales en anglais soit :
    K, Q, B, N ,R lettres majuscules pour R roi, D dame, F fou, C cavalier,T tour
    En francais un début de partie s'écrit ainsi :
    1. d4 d5 2. c4 c6 3. Cc3 Cf6 4. e3 e6 5. Cf3 Cbd7 6. Dc2 b6 7. cxd5 exd5 8. Fd3 Fe7
    En anglais:
    1. d4 d5 2. c4 c6 3. Nc3 Nf6 4. e3 e6 5. Nf3 Nbd7 6. Qc2 b6 7. cxd5 exd5 8. Bd3 Be7
    DONC
    je cherche un javascript à intégrer dans une page web (sur un blog) qui serait capable de changer, automatiquement, dans une zone de texte, après un "clic" sur un bouton, les 5 majuscules du texte français (R D F C T) en 5 majuscules correspondant à l'anglais (K Q B N R)
    Bien que ne connaissant pas le javascript, j'ai fait des recherches et essais, bien sûr, non concluants...
    J'indique quand même ci-après, le résultat.
    Merci de ne pas se moquer !je n'ai aucune base...
    Si une personne peut corriger et/ou me proposer un script, ce serait fabuleux !
    Mes essais
    Je pense que le script, en lui même est correct , par contre ma tentative d'intégration est incorrecte
    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
    <html>
    <head>
     
    <script language="javascript">
     
      <script>
         function traduire(form1) {
         array = {"R":"K", "D":"Q", "F":"B", "C":"N", "T":"R"} ;
         chaine = '' ;
         pieces = X.split(" ") ;
         for( i in pieces ) {
              if ( /(R|D|F|C|T)/.test(pieces[i].charAt(0)) )
                   chaine += array[RegExp.$1] + pieces[i].substring(1) + " " ;
              else chaine += pieces[i] + " " ;
              }
         chaine = chaine.substring(0, chaine.length-1);
         return(chaine);
         }
     
         </script>
    </head>
     
    <body>
    <FORM NAME="form1">
    <INPUT TYPE="text" NAME="input" VALUE=""><BR>
    <INPUT TYPE="button" NAME="bouton" VALUE="Changer" onClick="traduire(form1)">
    </FORM>
     
    </html>

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Bonjour
    j'ai pas vraiment compris "tentative d'intégration", mais je suppose que le problème est la ligne
    pieces = X.split(" ") ;

    Pour pouvoir récupérer la valeur de ton input, on va commencer par lui donner un identifiant unique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <INPUT TYPE="text" NAME="input" VALUE="" ID="echec"><BR>
    <INPUT TYPE="button" NAME="bouton" VALUE="Changer" onClick="traduire()">
    puis, pour récupérer sa valeur, dans ta méthode traduire()::
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function traduire() {
         var array = {"R":"K", "D":"Q", "F":"B", "C":"N", "T":"R"} ;
    //dans pieces, on va mettre la valeur de l'input dont l'ID est "echec"
         var pieces = document.getElementById("echec").value; 
         ….
    Ensuite, ta méthode javascript est bien, on va juste essayer de la raccourcir un peu.
    Comme pieces est une chaîne de caractères, on peut utiliser la méthode "replace" pour faire ce que tu veux. Elle prend en paramètre une REGEX et une fonction qui sera appelée à chaque fois qu'un résultat sera trouvé
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var translate = pieces.replace(/[RDFTC]/g,function (match){ return array[match]; });
    /[RDFTC]/g: la notation entre crochet permet de définir les caractères autorisé, ici R ou D ou F ou…, pas besoin du |
    le 'g' à la fin indique de faire une recherche dans toute la chaine de caratères (global)
    la fonction prend en argument : match: le résultat de la REGEX ici, une des lettres recherchées. A chaque fois qu'une lettre est trouvée dans la chaine, la fonction est appelée et retourne la lettre correspondante stockée dans "array"

    Ensuite, pourquoi "return chaine"? Tu veux l'afficher dans l'input peut être? Dans ce cas, on utilise la même façon que pour récupérer la valeur:

    document.getElementById("echec").value = translate.

    Ton code deviendrait:
    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
    <html>
    <head>
     
    <script>
     
    function traduire() {
         var array = {"R":"K", "D":"Q", "F":"B", "C":"N", "T":"R"} ;
         //dans pieces, on va mettre la valeur de l'input dont l'ID est "echec"
         var pieces = document.getElementById("echec").value; 
         //on converti les lettres
         var translate = pieces.replace(/[RDFTC]/g,function (match){ return array[match]; });
        //on affiche le resultat dans l'input
    document.getElementById("echec").value = translate;
    }
    </script>
    <body>
    <INPUT TYPE="text" NAME="input" VALUE="" ID="echec"><BR>
    <INPUT TYPE="button" NAME="bouton" VALUE="Changer" onClick="traduire()">
    </body>
     
    </html>
    J'espère avoir bien compris ta question.

  3. #3
    Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Javascript = Echec !
    D'abord merci beaucoup pour cette aide qui correspond excatement à ma demande.
    Malheureusement, je viens de tester et cela ne marche pas et j'en suis désolé.
    Je suis absolumenti ncapable de voir/comprendre pourquoi !
    j'espère que cela sra solutionné !
    Bien sincérement merci.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    tu pourrais m'expliquer ce qui ne marche pas exactement?
    En plus, je me suis rendu compte d'une petite erreur (oups) dans le code, j'avais oublié de fermer le guillemet du value. Je viens de modifier le post. Peut être que c'est la le problème?

  5. #5
    Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut SUPER : ça marche !
    MERCI
    Désormais cela marche TB
    J'ai déjà créé un article qui l'intégre sur mon blog
    avec exemple à tester + un viewer pour voir la partie
    http://uia-echecs.blogspot.fr/2016/0...cais-vers.html

    Petit complément :
    -est-il possible de modifier l'aspect visuel de la zone où l'on rentre la partie (une zone rectangulaire ?)
    -et mieux faciliter le copier/coller du texte (boutons ?...)

    Je demande beaucoup ! mais c'est facultatif.
    je suis vraiment content car c'est une demande de joueurs qui notent en français leur partie ou qui en récupérent en français (par ex sur wikipédia) mais qui ne peuvent les visualiser car le texte n'est pas en anglais !

    De plus j'aimerais que ton nom (ou autre ?) apparaisse dans le code pour préciser que tu es l'auteur de ce script.
    Encore merci !

  6. #6
    Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut RESOLU
    J'ai réussi à modifier et adapter le javascript avec:
    -une zone texte (textarea) mieux adaptée
    -un deuxième javascript vers le français.
    C'est définitivement finalisé et j'en suis très satisfait
    Merci bcp à st3ff qui a su me proposer un script impeccable.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction d'évaluation de MinMax aux échecs
    Par kaisser dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 25/03/2011, 03h02
  2. Complexité algorithmique aux échecs
    Par 08121989 dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 06/10/2010, 21h47
  3. [PROJET] langage de script dedie aux jeux
    Par screetch dans le forum Développement 2D, 3D et Jeux
    Réponses: 14
    Dernier message: 27/08/2007, 17h22
  4. Réponses: 14
    Dernier message: 05/05/2006, 09h39

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