Partage
  • Partager sur Facebook
  • Partager sur Twitter

Vérifier trace sur canvas

Vérifier trace sur canvas

Sujet résolu
    1 décembre 2010 à 18:16:14


    Bonsoir, j'aurais besoin de votre aide concernant un jeu pour enfant que j'ai réalisé. Voici le lien : http://x0rtix.power-heberg.com/Fichiers/jeu.php?nb_mot=1

    Le but du jeu est de redessiner le mot dans le canvas puis valider en cliquant sur "Continuer" et à la fin un bilan vous annonce le résultat en gros.

    Le jeu marche parfaitement à part un problème : si on écrit rien dans le canvas et qu'on clique directement sur le bouton "Continuer" sa trouve quand même des pixels sur le canvas "modèle" (voir code source de la page) donc il faudrait faire une sorte de sécurité dans le script JS (http://x0rtix.power-heberg.com/Fichier [...] nnaissance.js) permettant de mettre le ratio supérieur à 1 par exemple pour que sa nous dise : "Vous avez fait aucun tracet, merci de recommencer" avec un windows.load pour recharger la page et que l'enfant puisse cette fois ci dessiner le mot.

    Merci de votre aide, Bonne soirée,
    Cordialement, xortix
    • Partager sur Facebook
    • Partager sur Twitter
      1 décembre 2010 à 18:55:12

      Il faudrait que tu détectes dans la fonction LCabaTab() si tous les pixels sont transparents, alors rien n'a été dessiné.

      Genre un booléen qui change de valeur dès qu'un pixel est non-transparent.

      // On parcourt les pixels de l'ImageData
      for(var j=0,m=imgData.height;j<m;j++) {
        tab[j] = [];
        for(var i=0,l=imgData.width;i<l;i++) {
          var ind = 4*(imgData.width*j+i);
          // On donne comme valeur 0 ou maxLCaba selon l'opacité du pixel
          tab[j][i] = Math.round(data[ind+3]/255)*maxLCaba;
          // On passe userVide à false si tab[j][i]!=0
          if(userVide && tab[j][i]!=0) { userVide = false; }
        }
      }
      


      (avec une variable userVide déclarée précédemment et initialisée à true)


      Pis dans compare(), tu regardes la valeur de userVide, et tu agis en fonction ?
      • Partager sur Facebook
      • Partager sur Twitter
        1 décembre 2010 à 19:59:20

        J'ai donc mis sa :

        LCabaTab = function(tab,imgData) {
            var data = imgData.data;
        	var userVide = true;
            // On parcourt les pixels de l'ImageData
            for(var j=0,m=imgData.height;j<m;j++) {
              tab[j] = [];
              for(var i=0,l=imgData.width;i<l;i++) {
                var ind = 4*(imgData.width*j+i);
                // On donne comme valeur 0 ou maxLCaba selon l'opacité du pixel
                tab[j][i] = Math.round(data[ind+3]/255)*maxLCaba;
        		// On passe userVide à false si tab[j][i]!=0
        		if((userVide) && (tab[j][i]!=0))
        		{
        		userVide = false;
        		}
              }
            }
        



        Avec sa après : ratio /= Math.pow(maxLCaba,2);

        var userVide;
        	
        	 if(!userVide) {
              alert("champs vide !");
            }
        


        Seulement le code ci-dessus m'affiche tout le temps "champs vide !" :s sa doit venir de la variable userVide .
        • Partager sur Facebook
        • Partager sur Twitter
          1 décembre 2010 à 20:32:35

          Tu ne dois pas déclarer la variable à ces endroits-là.

          Tu dois la déclarer une seule et unique fois, aux côtés des variables LCabaMax, etc.

          Eventuellement, tu peux par contre laisser l'initialisation de la variable ligne 3 du premier code, en enlevant donc simplement le "var".
          • Partager sur Facebook
          • Partager sur Twitter
            1 décembre 2010 à 21:02:25


            A oui j'chui bête :s

            Merci de ton aide. Sa fonctionne nikel maintenant :D

            Bonne fin de soirée
            • Partager sur Facebook
            • Partager sur Twitter

            Vérifier trace sur canvas

            × 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