JeuWeb - Crée ton jeu par navigateur
[Résolu] Debug script timer (compte à rebours) - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Debug script timer (compte à rebours) (/showthread.php?tid=2718)

Pages : 1 2 3


[Résolu] Debug script timer (compte à rebours) - Kassak - 06-07-2008




RE: Debug script timer (compte à rebours) - Kassak - 06-07-2008

Je souhaiterais rajouter ( pas en edit pour les éventuelles personnes qui ont déjà lu et qui n'ont pas envie de se casser la tête ), qu'il y a affiché "seconde" au singulier, donc d'après le script, t2 doit être <= 1, or t2 = $teamps 1, et je viens de tester $temps1, il est bien égal à 10 au début, et 0 lors du refresh....


RE: Debug script timer (compte à rebours) - emaia - 06-07-2008

Bonjour,
je pense que le problème vient de la fonction et de son accès à la variable t2, il faut le passer en argument, j'ai donc refaits légèrement le code (en admettant qu'elle est lancé automatiquement :
Code :
temps = <? echo $temps1; ?>;
function timer(temps)
{
    if (temps == 0){
        window.location.reload();
    }else if (temps == 1){
        document.getElementById("timer").value = "1 seconde";
        temps--;
    }else{
        document.getElementById("timer").value = temps+" secondes";
        temps--;
    }
    setTimeout('timer('+temps+')',1000);
  
}
Voila, en espérant que cela te convienne Smile
Cordialement, emaia.


RE: Debug script timer (compte à rebours) - Kassak - 06-07-2008

Non, maintenant il n'y a plus rien d'affiché dans le formulaire, si je rajoute seulement t2 en argument, j'obtiens un "undefined" dans le formulaire, j'ai alors copié collé ton code qui me semble correct, mais la il n'y a plus rien...Wink


RE: Debug script timer (compte à rebours) - emaia - 07-07-2008

Re-Bonjour,
Bon, j'ai essayé d'interpréter ton code et j'en suis arriver à ce résultat :
Code :
<script>
function timer(temps)
{
    if (temps == 0){
        window.location.replace('index.php');
    }else if (temps == 1){
        document.getElementById("timer").value = "1 seconde";
        document.getElementById("timer").disabled = true;;
        temps--;
    }else{
        document.getElementById("timer").value = temps+" secondes";
        document.getElementById("timer").disabled = true;
        temps--;
    }
    setTimeout('timer('+temps+')',1000);
  
}
</script>
<?php

// VERIFICATION SI ATTAQUE
if ($_GET['attaque'] == 1){
    ?>
    
    <body onLoad="timer(10)">
    
    <?php
}else(
    ?>
    
    <body>
    
    <?php
)
    
?>

<input type="button" id="timer" value="Attaquer !" onClick="window.location.replace('index.php?attaque=1');">

</body>

Donc le joueur ne peut attaquer que toute les 10sec., j'ai utilisé des "location.replace "un peu barbares mais tu pourra les remplacer par du bon petit AJAX (pour refresh la vie par exemple) er des <div> pour ne pas avoir besoin de remplacer la page entière.
Cordialement, emaia.


RE: Debug script timer (compte à rebours) - Kassak - 07-07-2008

C'est un peu plus complexe que ça derrière, suivant la valeur de $temps1, je cache ou j'affiche divers boutons, formulaire etc... Wink

Je ne veux pas changer entièrement mon script qui marchait très bien il y a quelques jours de cela, aujourd'hui je test, ça marche plus, je pense que j'aurais pas du tester ça me fout les boules^^

Donc si quelqu'un voit l'erreur dans ce script... Wink

Edit: et je crois que t'as pas pigé, le joueur doit attendre 10s entre chaque attaque, le script marche bien, seulement le compte à rebours de 10 => 0, ne marche plus Wink


RE: Debug script timer (compte à rebours) - emaia - 07-07-2008

Salut,
J'aurais juste besoin d'une petite précision :
Comment appelle-tu la fonction timer() ?
Parce que je pense que t2 est nulle dans ta fonction.
Cordialement, emaia.
P.S:Irc ?


RE: Debug script timer (compte à rebours) - Kassak - 07-07-2008

Je l'appelle dans le body :

Code PHP :
<? 
if($temps1>10){?>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<?}else {?>
<body onLoad="timer();" bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<?}
?>

Wink


RE: Debug script timer (compte à rebours) - emaia - 07-07-2008

Re-...Salut,
En fait je pense que le problème est simple, met un argument à ta fonction :
Code :
function timer(t2){
...
}

Et change ton onLoad :
Code PHP :
<? 
if($temps1>10){?>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<?}else {?>
<body onLoad="timer(<?php echo $temps1; ?>);" bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<?}
?>

D'ailleurs pour qu'il y est le compte à rebourd, $temps1 doit forcément être égale à 10, donc pourquoi (plus petit ou égale):
Code :
if (t2>=10){
...
}

Sinon j'espère que ca va marcher Smile


RE: Debug script timer (compte à rebours) - Kassak - 07-07-2008

Toujours pas Wink