Partage
  • Partager sur Facebook
  • Partager sur Twitter

Javascript et DOM

Petit jeu

    10 février 2010 à 18:50:42

    Bonjour,

    Je dois faire le jeu du plus ou moins avec Javascript.
    Générer un nombre entre 0 et10, on le devine, on récupère le nombre de coups, le temps mis pour trouver le chiffre et le nom du joueur.
    J'ai un tableau d'objet de 10 places dans lequel je dois ranger les 10 meilleurs joueurs classés par le temps.
    Tout marche bien mais je n'arrive pas à classer et à ranger mes temps dans le tableau, c'est à dire qu'à chaque fois qu'un joueur est dans le top 10, on doit décaler les autres joueurs dont le temps est supérieur et insérer celui ci.

    Voici mon code :

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3c.org/TR/html4/strict.dtd">
    
    <html>
    
    <head>
    <title>Mes premiers pas en Javascript : DOM et Javascript jeu du plus ou moins</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8">
    
    <style type = "text/css">
    h2{
    color:#000080;
    text-align:center;
    }
    body{
    background-color: #778899;
    }
    p{
    color:#000080;
    }
    </style>
    
    <script type="text/javascript">
    
    tab = new Array(10);
    
    function init()
    {
    	for(var i=0;i<tab.length;i++){
    		tab[i] = new Object();
    		tab[i].Nom="....";
    		tab[i].Temps=1000;
    		tab[i].Nombre=1000; }
    }
    
    
    function aleatoire()
    {
    x = Math.floor(Math.random()*10); //Donne un nb entier aleatoire entre 1 et 10
    alert("X="+x);                     //Affiche le nombre à deviner
    cpt = 1;                           //compteur de coups
    var t1,t2;
    t1 = new Date;
    
    	do{
    		nbchaine=prompt("Donnez un nombre entier compris entre 1 et 10 ou stop pour terminer");
    		if (nbchaine == "stop") return;     //Si on rentre "stop" la fonction s'arrête
    		nombre = parseInt(nbchaine);       //Convertit la chaine en nombre
    							
    		if(nombre > x){     //Si le nombre saisi est supérieur au nombre cherché x
    			          cpt++;
    				  alert("Raté, c'est plus petit !");
    			
    			      }else{	
    					    if(nombre < x) {
    					    cpt++;					
    					    alert("raté, c'est plus grand !"); }	
    				   }
    					
    			if(nombre == x){
                                    t2 = new Date;
    				alert("Bravo, vous avez trouvé ! Nombre de coups : "+cpt);
    				var temps=Math.floor(((t2.getTime()-t1.getTime())/1000));  //Donne le temps ecoule entre t1 et t2
    				alert("Temps écoulé en secondes :"+temps); 
    				nom=prompt("Votre nom :");
    	                               }
    
    
    
    	} while (nombre != x);
    
    	for(var i=0;(i<=tab.length)&&(temps>tab[i].Temps);i++);
    
    	if (temps>tab[9].Temps)
    		{
    		alert("Désolé, pas dans le top 10 !");
    		}
    	else            // inserer temps dans le top 10 a la position i
    		{
    				for(i=0;temps>tab[i].Temps && i<tab.length;i++);
    						for(j=9;j>i-1;j--)
    						tab[j]=tab[j-1];
    
    			tab[i-1].Temps=temps;
    			tab[i-1].Nom=nom;
    			tab[i-1].Nombre=cpt;
    					
    		for(i=1;i<=10;i++){
    			var monid="temps"+i;
    			var monid1="nom"+i;
    			var monid2="nombre"+i;
    			noeud=document.getElementById(monid);
    			noeud.innerHTML=""+tab[i-1].Temps;
    			noeud1=document.getElementById(monid1);
    			noeud1.innerHTML=""+tab[i-1].Nom;
    			noeud2=document.getElementById(monid2);
    			noeud2.innerHTML=""+tab[i-1].Nombre;
     				  }
    		}
    }
    </script>
    </head>
    
    <body onload="init()">
    
    <h2> Bienvenue au "JEU DU PLUS OU MOINS" </h2><br/>
    <p>Veuillez cliquer sur le bouton pour lancer le jeu : <button onclick="aleatoire()">Jouer !</button></p><br/>
    
    <table summary="Tableau des joueurs" border=15px width=35% bgcolor=grey>
    <caption align=bottom>Tableau des meilleurs joueurs</caption>
    <thead> <!--Description des colonnes-->
    <tr>
    <th id="id1">Rang</th>
    <th id="id2">Nom</th>
    
    <th id="id3">Nombre</th>
    <th id="id4">Temps</th>
    </tr>
    </thead>
    <tbody>
    <tr>     <!--Remplissage des lignes-->
    <td id="rang1">1</td>
    <td id="nom1"> </td>
    <td id="nombre1"> </td>
    <td id="temps1"> </td>
    
    </tr>
    <tr>
    <td id="rang2">2</td>
    <td id="nom2"> </td>
    <td id="nombre2"> </td>
    <td id="temps2"> </td>
    </tr>
    <tr>
    <td id="rang3">3</td>
    <td id="nom3"> </td>
    <td id="nombre3"> </td>
    
    <td id="temps3"> </td>
    </tr>
    <tr>
    <td id="rang4">4</td>
    <td id="nom4"> </td>
    <td id="nombre4"> </td>
    <td id="temps4"> </td>
    </tr>
    <tr>
    <td id="rang5">5</td>
    <td id="nom5"> </td>
    
    <td id="nombre5"> </td>
    <td id="temps5"> </td>
    </tr>
    <tr>
    <td id="rang6">6</td>
    <td id="nom6"> </td>
    <td id="nombre6"> </td>
    <td id="temps6"> </td>
    </tr>
    <tr>
    <td id="rang7">7</td>
    
    <td id="nom7"> </td>
    <td id="nombre7"> </td>
    <td id="temps7"> </td>
    </tr>
    <tr>
    <td id="rang8">8</td>
    <td id="nom8"> </td>
    <td id="nombre8"> </td>
    <td id="temps8"> </td>
    </tr>
    
    <tr>
    <td id="rang9">9</td>
    <td id="nom9"> </td>
    <td id="nombre9"> </td>
    <td id="temps9"> </td>
    </tr>
    <tr>
    <td id="rang10">10</td>
    <td id="nom10"> </td>
    <td id="nombre10"> </td>
    
    <td id="temps10"> </td>
    </tr>
    </tbody>
    </table>
    
    </body>
    
    </html>
    


    Je pense que le problème se situe au niveau du else où il y a le commentaire //insérer le temps à la position i, mais je ne sais pas comment le résoudre, merci.
    • Partager sur Facebook
    • Partager sur Twitter
      10 février 2010 à 19:36:48

      le temps est exprimé comment? en seconde ou en minute ou les deux?
      • Partager sur Facebook
      • Partager sur Twitter
      $2b||!$2b
        10 février 2010 à 20:54:11

        ligne 80 enlève le ; à la fin
        et autant suivre les bonnes pratiques ça ne coûte pas plus cher, en mettant des {} même si ça ne sert pas au moins tu es sûr de ce sur quoi tu boucles.

        • Partager sur Facebook
        • Partager sur Twitter
          10 février 2010 à 21:08:42

          Oui le temps est en secondes (ligne 63.

          Sinon j'ai enlevé le ; ligne 80 et ça ne change rien, mon tableau ne se met toujours pas à jour...
          • Partager sur Facebook
          • Partager sur Twitter
            10 février 2010 à 22:50:36

            J'ai pas lu ton code mais l'algorythme de trie est le suivant:
            var tab = Array('8','1','2','3','9');
            var verif = 1;
            var tmp;
            while(verif != 0){
              verif = 0;
              for(var i=0;i<4;i++){
                 if(tab[i] > tab[i+1]){
                     tmp = tab[i];
                     tab[i] = tab[i+1];
                     tab[i+1] = tmp;
                     verif = 1;
                 }
              }
            }
            
            • Partager sur Facebook
            • Partager sur Twitter
            $2b||!$2b
              10 février 2010 à 23:49:07

              @skuti : pour trier un tableau ya plus simple :

              var tab = Array('8','1','2','3','9');
              
              tab.sort(); // tri par ordre alphabétique
              
              // ou
              
              tab.sort( function (a, b) { return a - b; } ); // tri par ordre numérique
              


              >>
              • Partager sur Facebook
              • Partager sur Twitter
                10 février 2010 à 23:58:16

                Lol oui en effet mais je suis plus du genre a faire mes propre fonction ^^
                • Partager sur Facebook
                • Partager sur Twitter
                $2b||!$2b
                  11 février 2010 à 0:56:43

                  Mais les fonctions natives sont souvent plus rapides ;)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Javascript et DOM

                  × 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