







|
|
|
 |
| > DOM et Javascript |
[ Posté par spigaou13 ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 15-02-2010 à 11:54 | 1 messages ]
  |
 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 (en secondes) 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 html, 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.
  |

|
|
Services email :
  Vous devez vous identifier pour profiter des services par email du forum.
|

|