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 :

Comparaison lettre tapée au clavier et valeur dans un tableau


Sujet :

JavaScript

  1. #1
    Membre régulier
    Femme Profil pro
    Developpeur logiciel
    Inscrit en
    Juin 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 62
    Points : 74
    Points
    74
    Par défaut Comparaison lettre tapée au clavier et valeur dans un tableau
    Bonjour à tous !
    Alors voilà. J'ai un petit problème. J'ai fait un code qui a pour but de donner une lettre aleatoire à l'utilisateur, et lorsque ce dernier tape sur son clavier sur la lettre correspondante, il se passe quelque chose (du genre alert("tu as tapé sur la bonne lettre"); quoi !!
    Sauf que ... Ca ne fonctionne pas !
    Les lettres aleatoires s'affichent bien, lorsque l'utilisateur tape sur son clavier, la lettre s'affiche bien, mais je n'arrive pas du tout à mettre en lien ces deux trucs pour que ca marche !!! HELP .

    Code JS :

    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
     
    var lettres =document.querySelectorAll("#ListeChar");
    var touche =document.querySelectorAll("#touchejoueur");
     
    //********************************************
    //   Etape 1 : fonction d'affichage aleatoire des lettres
    //********************************************
    function lettre() {
    	 var i;
    	 var items = {"A":65,
                      "B":66,
                      "C":67
    };	
     
    var item = Object.keys(items)
    var affichageCle = item[Math.floor(Math.random()*item.length)];
    ListeChar.innerHTML = affichageCle;
    }
     
     
     
    //*******************************************
    //   Etape 2 : repérer les lettres que l'on tape
    //********************************************
    function toucheenfoncer(event){
    var e = event.keyCode;
    var nom= String.fromCharCode(e);
    touchejoueur.innerHTML = nom;
     }
     
    //*********************************************
    //   Etape 3 : comparer lettre tapée + event 
    //*********************************************
    function comparer() {
    if (affichageCle==nom)
    {
    	alert("Le lien entre les deux se fait !! Wouuuh"); 
    }
    }
     
    lettre();
    toucheenfoncer();
    comparer();
    Code html :

    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
    <!DOCTYPE html>
     
    <html>
     
    <head>
        <meta charset="utf-8"/>
        <link rel="stylesheet" href="style.css">
        <title>Tape</title>
    </head>
     
    	<body onkeydown="toucheenfoncer(event)" onkeydown=lettre();>
     
    		<div id="ListeChar">5</div>
    		<div id="touchejoueur">5</div>
     
     
     
     
     
     
     
    	 <!-- ******************************
            INCLUSION FICHIER JAVASCRIPT
     ***********************************  -->
        <script src="app.js" type="text/javascript"></script>
     
    </body>
    </html>

  2. #2
    Membre habitué
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Points : 144
    Points
    144
    Par défaut
    Salut, j'ai pas réfléchi à ton problème mais je te fais juste remarquer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onkeydown="toucheenfoncer(event)" onkeydown=lettre();>
    Je l'aurais écris plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onkeydown="toucheenfoncer(event); onkeydown=lettre();">
    Qu'en penses-tu ?

    EDIT Voilà j'ai vu ton problème, essaie cette solution je ne l'ai pas encore essayé, je vais le faire.

    Dans le fichier "js" :
    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
    var alphabet="abcdefghijklmnopqrstuvwxyz";
    var utilisateur=alphabet[(math.random()*26)]; // lettre aléatoire pour l'utilisateur, adapte comme tu veux cette ligne.
     
    function keycodechar(lecode){
      var valeur= ev.keyCode;
      var shift = ev.shiftKey;
      if (valeur>=96 && valeur<=105){lettre=valeur-96;} // pour cette ligne je ne suis pas sûr je vais tester.
      if (valeur>=65 && valeur<=90 && shift){lettre=String.fromCharCode(lecode);}
      if (valeur>=65 && valeur<=90 && !shift){lettre=String.fromCharCode(valeur+32);}
      return lettre;
    }
     
    function toucheenfoncer(event){
      var lettre=keycodechar(event.keycode);
      if(lettre==utilisateur){
        var indication=" Vous avez trouvé votre lettre : "+lettre;
      }else
      {
      var indication="Désolé vous n'avez pas trouvé :/";
      }
      if(document.getElementById("message"){
         document.getElementById("message").display="block";
         document.getElementById("texte").innerHTML=indication;
      }
    }
    Dans le fichier "HTML" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <body onkeydown="toucheenfoncer(event)">
    <div id="message">
       <div id="texte"></div>
       <input type="button" value="OK" onclick="this.close();"> <!-- Ici je sais plus si c'est parent.close ou this.close -->
    </div>
    Convertir un keycode en caractère m'a été indiqué par ce topic :
    http://www.developpez.net/forums/d10...re/#post686002

  3. #3
    Membre régulier
    Femme Profil pro
    Developpeur logiciel
    Inscrit en
    Juin 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 62
    Points : 74
    Points
    74
    Par défaut
    Hélas je ne crois pas que le html pose problème. C'est plutôt mon JS ...! Il n'arrive pas à comprendre que le B du clavier que l'on tape par exemple, est équivalent au B du tirage aléatoire.

  4. #4
    Membre habitué
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Points : 144
    Points
    144
    Par défaut
    Voilà mon exemple est corrigé, je vais l'essayé

  5. #5
    Membre habitué
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Points : 144
    Points
    144
    Par défaut
    Ah je viens de me relire, j'ai oublié de faire un display="none" mais c'est pas important en fait puisque le message est fermé

    Bon je vais tester le code.

  6. #6
    Membre régulier
    Femme Profil pro
    Developpeur logiciel
    Inscrit en
    Juin 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 62
    Points : 74
    Points
    74
    Par défaut
    Dis moi si ça marche .
    Je l'essaye dans 1heure moi sinon!

  7. #7
    Membre habitué
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Points : 144
    Points
    144
    Par défaut
    Oui je suis en train de l'essayer et réparer les erreurs, ton projet m'interesse aussi

  8. #8
    Membre habitué
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Points : 144
    Points
    144
    Par défaut
    Le code avec les erreurs réparées, il m'en reste une pour le moment que je suis en train de voir, c'est le message :
    Uncaught TypeError: Cannot read property 'keyCode' of undefined

    relatif à la ligne 5 du fichier js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      var valeur= lecode.keyCode;

    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
     
    var alphabet="abcdefghijklmnopqrstuvwxyz";
    var utilisateur=alphabet.charAt(Math.random()*26); // lettre aléatoire pour l'utilisateur, adapte comme tu veux cette ligne.
     
    function keycodechar(lecode){
      var valeur= lecode.keyCode;
      var shift = lecode.shiftKey;
      if (valeur>=96 && valeur<=105){lettre=valeur-96;} // pour cette ligne je ne suis pas sûr je vais tester.
      if (valeur>=65 && valeur<=90 && shift){lettre=String.fromCharCode(lecode);}
      if (valeur>=65 && valeur<=90 && !shift){lettre=String.fromCharCode(valeur+32);}
      return lettre;
    }
     
    function toucheenfoncer(event){
      var lettre=keycodechar(event.keycode);
      if(lettre==utilisateur){
        var indication=" Vous avez trouvé votre lettre : "+lettre;
      }else
      {
      var indication="Désolé vous n'avez pas trouvé :/";
      }
      if(document.getElementById("panneau")){
         document.getElementById("panneau").style.display="block";
         document.getElementById("texte").innerHTML=indication;
      }
    }
     
    function ferme(){
        if(document.getElementById("panneau")){
         document.getElementById("panneau").style.display="none";
        }
    }
    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
    <html>
    <head>
    	<link href="touches.css" rel="stylesheet" href="style.css">
    	<script type="text/javascript" src="js/touches.js"></script>
    </head>
     
    <body onkeydown="toucheenfoncer(event)">
     
    <div id="panneau">
    	<div id="message">
    	   <div id="texte"></div>
    	   <input type="button" value="OK" onclick="ferme();">
    	</div>
    </div>
     
    </body>
    </html>

  9. #9
    Membre habitué
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Points : 144
    Points
    144
    Par défaut
    Apparemment tout marche sauf cette histoire de keycode en ligne 5 du fichier js que j'arrive pas à résoudre pour le moment.

    NB : Le bouton ok s'affiche la première fois car le fichier CSS n'a pas été encore défini, mais tu peux prendre celui-là si tu veux :
    Je l'ai enregistré dans un fichier externe du nom de "touches.css" dans le même dossier que "touches.HTML".

    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
     
    #panneau{
    position:absolute;
    left:0;
    top:0;
    height:60px;
    width:100%;
    display:none;
    }
     
    #message{
    position:relative;
    width:100%;
    height:100%;
    text-align:center;
    }
     
    #texte{
    position:relative;
    width:250px;
    height:60px;
    margin:auto;
    background-color:#ffffaa;
    border: 1px solid black;
    }
    EDIT : J'ai corrigé le code javascript ne fonction du code CSS.

    Et j'ai ajouté cette ligne au fichier HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<link href="touches.css" rel="stylesheet" href="style.css">

  10. #10
    Membre habitué
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Points : 144
    Points
    144
    Par défaut
    Bonjour,
    si quelqu'un pouvait nous dépanner pour la ligne 5 du fichier JS ci-dessus ?

    On essaie d'avoir le caractère du keycode comme je veux le faire dans ce code erronné :

    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
     
    function keycodechar(valeur,shift){
      if (valeur>=96 && valeur<=105){var lettre=valeur-96;} // Cas des chiffres.
      if (valeur>=65 && valeur<=90 && shift){var lettre=String.fromCharCode(valeur);} // cas des lettres majuscules
      if (valeur>=65 && valeur<=90 && !shift){var lettre=String.fromCharCode(valeur+32);} // Cas des lettres minuscules
      return lettre;
    }
     
    function toucheenfoncer(event){ // Fonction appellée par le : body onkeydown="toucheenfoncer(event)"
      var valeur=event.keycode;
      var shift=event.shiftKey;
      var lettre=keycodechar(valeur,shift);
      if(lettre==utilisateur){
        var indication=" Vous avez trouvé votre lettre : "+lettre;
      }else
      {
      var indication="Désolé vous n'avez pas trouvé :/";
      }
      if(document.getElementById("panneau")){
         document.getElementById("panneau").display="block";
         document.getElementById("texte").innerHTML=indication;
      }
    }
    En se servant du topic ci-dessous je pensais y arriver mais j'ai merdé quelque part :
    http://www.developpez.net/forums/d10...re/#post686002

    La fonction dont je veux m'inspirer dans le topic indiqué en lien est :
    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
    function test(ev)
    {
     var valeur= ev.keyCode;
     var shift = ev.shiftKey;
     
     var elmt = document.getElementById("idDiv");
     if (valeur>=96 && valeur<=105)
     {
       elmt.innerHTML = valeur-96;
     }
     
     if (valeur>=65 && valeur<=90 && shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur);
     }
     if (valeur>=65 && valeur<=90 && !shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur+32);
     }
    }

  11. #11
    Membre habitué
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Points : 144
    Points
    144
    Par défaut
    Salut !

    Pourriez-vous nous aider à résoudre un petit problème ?

    Résumé du problème :

    1) Définir un caractère alphabétique au hasard.
    2) Détecter le caractère saisi par l'utilisateur
    3) Le comparer avec le caractère précédemment donné au hasard.
    4) Indiquer si l'utilisateur a bien trouvé ke bon caractère ou s'il a échoué.

    Voici les fichiers en cours :

    LE FICHIER JS (touches.js)
    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
    var alphabet="abcdefghijklmnopqrstuvwxyz";
    var utilisateur=alphabet.charAt(Math.random()*26); // lettre aléatoire pour l'utilisateur, adapte comme tu veux cette ligne.
     
    function keycodechar(valeur,shift){
      if (valeur>=96 && valeur<=105){var lettre=valeur-96;} // Cas des chiffres.
      if (valeur>=65 && valeur<=90 && shift){var lettre=String.fromCharCode(valeur);} // cas des lettres majuscules
      if (valeur>=65 && valeur<=90 && !shift){var lettre=String.fromCharCode(valeur+32);} // Cas des lettres minuscules
      //alert(lettre);
      return lettre;
    }
     
    function toucheenfoncer(event){
      var valeur=event.keycode;
      var shift=event.shiftKey;
      valeur=65;shift=true;
      var lettre=keycodechar(valeur,shift);
      if(lettre==utilisateur){
        var indication=" Vous avez trouvé votre lettre : "+lettre;
      }else
      {
      var indication="Désolé vous n'avez pas trouvé :/";
      }
      //alert(" indication= "+indication+" lettre saisie= "+lettre);
      if(document.getElementById("panneau")){
         document.getElementById("panneau").display="block";
         document.getElementById("texte").innerHTML=indication;
      }
    }
     
    function ferme(){
    	 if(document.getElementById("panneau")){
            document.getElementById("panneau").style.display="none";
    	 }	
     
    }
    LE FICHIER HTML : (touches.html)
    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
     
    <html>
    <head>
    	<link href="touches.css" rel="stylesheet" href="style.css">
    	<script type="text/javascript" src="js/touches.js"></script>
    </head>
     
    <body onkeydown="toucheenfoncer(event)">
     
    <div id="panneau">
    	<div id="message">
    	   <div id="texte"></div>
    	   <input type="button" value="OK" onclick="ferme();">
    	</div>
    </div>
     
    </body>
    </html>
    LE FICHIER CSS (touches.css)
    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
     
    #panneau{
    position:absolute;
    left:0;
    top:0;
    height:60px;
    width:100%;
    display:none;
    }
     
    #message{
    position:relative;
    width:100%;
    height:100%;
    text-align:center;
    }
     
    #texte{
    position:relative;
    width:250px;
    height:60px;
    margin:auto;
    background-color:#ffffaa;
    border: 1px solid black;
    }

    Convertir un keycode en caractère m'a été indiqué par ce topic :
    http://www.developpez.net/forums/d10...re/#post686002

    La fonction dont je veux m'inspirer dans le topic indiqué en lien est :
    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
    function test(ev)
    {
     var valeur= ev.keyCode;
     var shift = ev.shiftKey;
     
     var elmt = document.getElementById("idDiv");
     if (valeur>=96 && valeur<=105)
     {
       elmt.innerHTML = valeur-96;
     }
     
     if (valeur>=65 && valeur<=90 && shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur);
     }
     if (valeur>=65 && valeur<=90 && !shift)
     {
       elmt.innerHTML = String.fromCharCode(valeur+32);
     }
    }

  12. #12
    Membre régulier
    Femme Profil pro
    Developpeur logiciel
    Inscrit en
    Juin 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 62
    Points : 74
    Points
    74
    Par défaut
    C'est bon! Problème résolu!
    Ton code était un peu complexe pour faire ça ! Mais merci de ton aide malgré tout .
    Je posterai mon code plus tard je ne peux pas la . J'ai repris ma base et juste change quelques trucs . Je te file ça après !!!

  13. #13
    Membre habitué
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Points : 144
    Points
    144
    Par défaut
    Salut ^^

    Trouvé ? Super !

    Merci j'attend ton retour hein ?

    Problème non résolu pour moi pour le moment :/

Discussions similaires

  1. [XL-2010] Recherche valeur dans un tableau à 3 colonnes avec lettres et chiffres
    Par Remiroche.tw dans le forum Excel
    Réponses: 2
    Dernier message: 17/11/2012, 11h49
  2. [LG] Valeur dans un tableau
    Par hunter dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2005, 13h59
  3. [tableau]Valeur dans un tableau
    Par kisscool31 dans le forum Collection et Stream
    Réponses: 30
    Dernier message: 17/05/2005, 09h45
  4. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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