Correctif calcul de score

Résolu/Fermé
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022 - Modifié le 19 juil. 2022 à 11:53
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 20 juil. 2022 à 15:03

Bonjour,

Je suis en train de faire un affichage de score en fonction de du temps qui passe...

Le chrono s'enclenche en cliquant sur un bouton. Il fonctionne, mais pas l'affichage du score... 

Comment puis-je le corriger svp ?

Merci beaucoup

$('#chronometre').on('click', function() {
$secondes = 120; // définit le nombre de secondes

				$('#countdown_sec').text($secondes); //affiche 120 dans le chrono
				timerManager.start($secondes); 
			


				if ($secondes <= 120 && $secondes >= 91) {
$('#scoreencours').text('+6');
} 
else if ($secondes <= 90 && $secondes >= 61) {
$('#scoreencours').text('+4');
} 
else if ($secondes <= 60 && $secondes >= 31) {
	$('#scoreencours').text('+2');
} 
else if ($secondes <= 30 && $secondes >= 0) {
$('#scoreencours').text('+1');
};

});
			
timerManager = {
				start: function ($secondes) {
								$secondes = $secondes - 1; // provoque le décompte
								if ($secondes >= 0) { // tant que le chrono est supérieur à zéro
												timer = setTimeout(function () { // éxécute le code toutes les 1000 millisecondes
																$('#countdown_sec').text($secondes); // affiche le temps restant
																timerManager.start($secondes); // rappelle la fonction
												}, 1000);
								} else {
												timerManager.stop(); // arrête le chrono
								}
				},
				stop: function () { // to be called when you want to stop the timer
								clearTimeout(timer);
								$('#countdown_sec').text('0');
				}

};



});


Windows / Edge 103.0.1264.62

15 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 juil. 2022 à 12:28

Bonjour,

Tes tests sur les secondes se trouvent en dehors de ton timerManager ..

Donc il ne se passe rien... normal...


0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
19 juil. 2022 à 12:55

Le compte à rebours fonctionne, c'est l'affichage du score qui bloque...

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 juil. 2022 à 15:30

Oui oui.. j'avais bien compris...

0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
19 juil. 2022 à 16:09

Whouah!  c'est de l'explication...

"Papa, j'ai trouvé 276, mais la calculette affiche 286...

- C'est normal...

- Ah bon, pourquoi ?

- Parce que... Débrouille-toi ! "

Top, merci pour votre "aide" ! Je suis très avancé !

Ce doit être difficile de prendre le temps d'expliquer les choses... 

C'est beau l'humanité... Très beau... 'Un pour moi et tous pour personne...'

0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
Modifié le 19 juil. 2022 à 16:26

Quelle explication.... Je suis très avancé....

Merci pour cette "aide"...

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 juil. 2022 à 16:26

Désolé mais je suis à la plage... Et je réponds avec mon tel..

Je t'ai indiqué que tes tests se trouvent EN DEHORS de ton timerManager et par conséquent que c'était normal que ça ne marche pas...

Si tu ne comprends pas ma réponse... Dis le gentiment au lieu de t'exiter comme un boulet...

Résultat.. maintenant tu te debrouilleras tout seul comme un c#!;

Tchao...


0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
19 juil. 2022 à 16:30

Sauf que ce n'est pas la première fois que tu me prends pour une bille, mais bon...

Bonnes vacances tout de même

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 juil. 2022 à 20:51

Enfin bon.. je ne vois pas en quoi ma réponse initiale n'était pas claire ....

Papa... je verse de l'eau dans le bidon d'essence ... mais la voiture ne démarre pas ..

- C'est normal... Ce n'est pas dans le bidon qu'il faut mettre l'essence .. mais dans le réservoir de la voiture ...

- Ah... je pensais que c'était un réservoir wifi .... 

Bref...  après cette petite touche d'humour à ta sauce .. voici donc à quoi pourrait ressembler ton code et qui ( je ne l'ai pas testé.. ) devrait mieux fonctionner

$('#chronometre').on('click', function() {
  $secondes = 120; // définit le nombre de secondes
  $('#countdown_sec').text($secondes); //affiche 120 dans le chrono
  timerManager.start($secondes); 
});
			
timerManager = {
  start: function ($secondes) {
    $secondes = $secondes - 1; // provoque le décompte
    if ($secondes >= 0) { // tant que le chrono est supérieur à zéro
      if ($secondes <= 120 && $secondes >= 91) {
        $('#scoreencours').text('+6');
      } else if ($secondes <= 90 && $secondes >= 61) {
        $('#scoreencours').text('+4');
      } else if ($secondes <= 60 && $secondes >= 31) {
        $('#scoreencours').text('+2');
      } else if ($secondes <= 30 && $secondes >= 0) {
        $('#scoreencours').text('+1');
      };

      timer = setTimeout(function () { // éxécute le code toutes les 1000 millisecondes
        $('#countdown_sec').text($secondes); // affiche le temps restant
        timerManager.start($secondes); // rappelle la fonction
      }, 1000);
    } else {
      timerManager.stop(); // arrête le chrono
    }
  },
  stop: function () { // to be called when you want to stop the timer
    clearTimeout(timer);
    $('#countdown_sec').text('0');
  }

};

Alors bon.. je ne sais pas si je te prend pour une bille ...  mais ...comme qui dirait .. tu donnes le baton pour te faire battre....

J'espère ne pas avoir fait d'erreur dans le code que je t'ai donné;

Si c'est le cas, reviens nous voir en indiquant quel(s) éventuel(s) message(s) d'erreur tu aurais dans la console de ton navigateur et en expliquant précisément en quoi ça ne ferait pas ce que tu en attends.

Bonne soirée.


0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
19 juil. 2022 à 21:15

J'avoue que je n'ai pas été tendre ... Excuse-moi... 

Le code fonctionne  à merveille, merci beaucoup :)

Sans rancune?

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 juil. 2022 à 21:19

Pas de soucis.

Mais à l'avenir soit plus cool avec les gens qui te repondent.. ce sont des bénévoles.. on ne gagne rien à le faire..

0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
Modifié le 19 juil. 2022 à 21:28

Certes... Je ne veux pas raconter ma vie, mais j'ai que des tôles en ce moment....

Bref, le code fonctionne, je le décortiquerai demain matin.

Bonne soirée

0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
Modifié le 20 juil. 2022 à 09:17

Salutations

Le code fonctionne très bien. Je souhaite juste ajouter que quand le chrono est supérieur ou égal à 1, le score s'affiche +1 et quand le chrono égal 0, le score affiche 0: 0 secondes = 0 pt

 Après des tas d'essais, je trouve pas la bonne combi... soit la score m'affiche 0 à chrono=1, soit rien n'est modifié, cela reste à +1 quand chrono=0...

if ($secondes >= 0) { // tant que le chrono est supérieur à zéro
      if ($secondes <= 120 && $secondes >= 91) {
        $('#scoreencours').text('+6');
      } else if ($secondes <= 90 && $secondes >= 61) {
        $('#scoreencours').text('+4');
      } else if ($secondes <= 60 && $secondes >= 31) {
        $('#scoreencours').text('+2');
      } else if ($secondes <= 30 && $secondes >= 1) {
        $('#scoreencours').text('+1');
	  } else if ($secondes = 0 ) {
        $('#scoreencours').text('+0');
      };

Quelle is the erreur svp ?

Merci.

N

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juil. 2022 à 09:21

La comparaison se fait toujours avec deux symboles par exemple ==0

Mais vu que ton test précédent vérifie que tu es supérieur à 1 tu n'as donc pas besoin, pour le zéro, de faire un elseif..  un else tout court suffirait.

D'ailleurs tu n'as pas besoin à chaque fois de tester le supérieur et le inférieur... 

Par exemple 

($secondes <= 120 && $secondes >= 91) {

Juste le supérieur est suffisant

($secondes >= 91) {

0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
Modifié le 20 juil. 2022 à 10:09
timerManager = {
  start: function ($secondes) {
    $secondes = $secondes - 1; // provoque le décompte
    if ($secondes >= 0) { // tant que le chrono est supérieur à zéro
      if ($secondes >= 120 ) {
        $('#scoreencours').text('+6');
      } else if ($secondes >= 91 ) {
        $('#scoreencours').text('+4');
      } else if ($secondes >= 61 ) {
        $('#scoreencours').text('+2');
      } else if ($secondes >= 31 ) {
        $('#scoreencours').text('+1');
	  } else ($secondes == 0 ) { // { souligné
        $('#scoreencours').text('+0');
      };

      timer = setTimeout(function () { // éxécute le code toutes les 1000 millisecondes
        $('#countdown_sec').text($secondes); // affiche le temps restant
        timerManager.start($secondes); // rappelle la fonction
      }, 1000);
    } else {
      timerManager.stop(); // arrête le chrono
    }
  },
  stop: function () { // to be called when you want to stop the timer
    clearTimeout(timer);
    $('#countdown_sec').text('0');
  }

};

Comme ça ? mais il m'indique une erreur...

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juil. 2022 à 10:13

Avec le else il n'y a pas de test à mettre

0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
20 juil. 2022 à 10:17
 if ($secondes >= 0) { // tant que le chrono est supérieur à zéro
      if ($secondes >= 120 ) {
        $('#scoreencours').text('+6');
      } else if ($secondes >= 91 ) {
        $('#scoreencours').text('+4');
      } else if ($secondes >= 61 ) {
        $('#scoreencours').text('+2');
      } else if ($secondes >= 31 ) {
        $('#scoreencours').text('+1');
	  } else  {
        $('#scoreencours').text('+0');
      };

Maintenant à 120 sec il m'affiche +4 ;'(

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juil. 2022 à 10:21
if ($secondes >= 91) {
  $('#scoreencours').text('+6');
} else if ($secondes >= 61) {
  $('#scoreencours').text('+4');
} else if ( $secondes >= 31) {
  $('#scoreencours').text('+2');
} else if ( $secondes >= 1) {
  $('#scoreencours').text('+1');
} else {
  $('#scoreencours').text('+0');
}
0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
20 juil. 2022 à 10:44
if ($secondes >= 0) { // tant que le chrono est supérieur à zéro
		if ($secondes >= 91) {
  $('#scoreencours').text('+6');
} else if ($secondes >= 61) {
  $('#scoreencours').text('+4');
} else if ( $secondes >= 31) {
  $('#scoreencours').text('+2');
} else if ( $secondes >= 1) {
  $('#scoreencours').text('+1');
} else  {
  $('#scoreencours').text('+0');
}

A sec=1 score =0... pas bon...

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juil. 2022 à 11:06

Ce n'est pas possible

Fais un console.log de ta variable..

A noter que tes tests se trouvent après la decrementation.. donc si a l'écran tu vois 1.. au niveau des if tu es déjà à 0...

Au pire, augmente de 1 chaque valeur dans tes if

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
20 juil. 2022 à 11:07

Ou deplace ta ligne 

$secondes = $secondes - 1; 

Apres tes tests..

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
20 juil. 2022 à 11:07

Ligne que tu peux d'ailleurs remplacer par

$secondes--;

0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
20 juil. 2022 à 11:21

log ne m'indique rien de particulier.... j'essaie de 2ème option

0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
20 juil. 2022 à 11:24

encore raté

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juil. 2022 à 15:03

C'est-à-dire ?

Qu'as-tu écris exactement où l'as-tu placée et qu'est-ce que ça t'affiche précisément ?

0
Nirsab Messages postés 78 Date d'inscription samedi 17 juillet 2021 Statut Membre Dernière intervention 8 août 2022
20 juil. 2022 à 14:03

Purée, j'ai même pas vu tes messages de 11.07 !!! C'est bon, cela fonctionne correctement.

MERCIIIIIIIIIIIii

0