Partage
  • Partager sur Facebook
  • Partager sur Twitter

Système de score

15 mars 2016 à 13:30:12

Bonjour, je suis lycéen et j'ai dû développer un projet pour mon enseignement d'exploration! Il s'agit tout simplement de remettre nos connaissances sur le HTML, JS, PHP, etc... sur ce que l'on veut! Ayant eu aucune idée, le professeur est venu m'aider sur un site web.

Ce site est (imaginons) un site créer par un professeur pour faire apprendre à ses élèves des additions, soustractions, etc... simples (du niveau primaire quoi! :D)

Le site demande alors (pour l'instant) une addition, mais j'ai envie de créer un système de score qui féliciterais l'élève. Le soucis c'est que lorsque j'ai créer une fonction sur le scorage, il indique le score, si la personne gagne un point ou rien! Après l'addition, je voudrai que la personne voit son score, mais lorsque j'applique ce code (ci-dessous), je ne vois pas le score final!

Pouvez-vous m'aider?

<script>
var nombre1 = Math.floor((Math.random() * 10) + 1);
var nombre2 = Math.floor((Math.random() * 10) + 1);
var reponse = prompt("Donne la bonne réponse pour: " + nombre1 + "+" + nombre2 + "?");
function scorage(){
	var score = 0;
	var point = score + 1;
	var paspoint = score;
}

if (reponse == nombre1 + nombre2) {
	alert("Bravo!");
	(point);
} 
else {
	alert("Dommage... Recommence!");
	(paspoint);
}

var scorefinal= alert(scorage);
</script>

Merci!

  • Partager sur Facebook
  • Partager sur Twitter
15 mars 2016 à 17:04:34

Bonjour,

Le problème vient de l'organisation du code. Plus précisément, il s'agit de l'étape où il faut modéliser le problème. Pour bien comprendre la nuance, je vais exprimer le même problème mais dans une représentation plus informatique :

Ecrire les fonction suivantes :

  • La fonction ajouterUnPoint(int n) renvoie l'entier n incrémenté de 1.
  • La fonction genererNombre(int x, int y) renvoie un nombre aléatoire entre x et y.
  • La fonction comparerNombres(int x, int y) renvoie vrai si x et y sont identiques et faux sinon.
  • La fonction demanderAddition(int x, int y) ouvre une boite de dialogue afin que l'utilisateur saisisse le résultat de l'addition et le renvoie.

En utilisant les fonctions précédentes, écrire un programme principal qui demande à l'utilisateur la réponse d'une addition de deux nombres aléatoires (compris entre 1 et 10 par exemple). Si la réponse est correcte, ajoute un point au score. Enfin, afficher le score. Le score est initialisé à 0 au début du programme.

Solution : https://jsfiddle.net/s2y5f8qz

-
Edité par Loxort 15 mars 2016 à 17:05:30

  • Partager sur Facebook
  • Partager sur Twitter
18 mars 2016 à 13:04:10

Merci Loxort!

Serais-ce quand même possible de "l'extraire" de sa boîte pour pouvoir l'inclure sur la page (et non en "pop-up"), il faudrait utiliser du PHP?

Et sinon, serais-ce possible d'ajouter un petit message pour féliciter ou encourager l'utilisateur quand il répond bien ou mal?

Merci encore! ;)

-
Edité par lilevier 18 mars 2016 à 13:32:37

  • Partager sur Facebook
  • Partager sur Twitter
18 mars 2016 à 16:41:42

Loxort a écrit:

Bonjour,

Le problème vient de l'organisation du code. Plus précisément, il s'agit de l'étape où il faut modéliser le problème. Pour bien comprendre la nuance, je vais exprimer le même problème mais dans une représentation plus informatique :

Ecrire les fonction suivantes :

  • La fonction ajouterUnPoint(int n) renvoie l'entier n incrémenté de 1.
  • La fonction genererNombre(int x, int y) renvoie un nombre aléatoire entre x et y.
  • La fonction comparerNombres(int x, int y) renvoie vrai si x et y sont identiques et faux sinon.
  • La fonction demanderAddition(int x, int y) ouvre une boite de dialogue afin que l'utilisateur saisisse le résultat de l'addition et le renvoie.

En utilisant les fonctions précédentes, écrire un programme principal qui demande à l'utilisateur la réponse d'une addition de deux nombres aléatoires (compris entre 1 et 10 par exemple). Si la réponse est correcte, ajoute un point au score. Enfin, afficher le score. Le score est initialisé à 0 au début du programme.

Solution : https://jsfiddle.net/s2y5f8qz

-
Edité par Loxort le 15 mars 2016 à 17:05:30

Pour ta solution, tu peux faire quelques amélioration :

function demanderAddition(nombre1, nombre2) {
	reponse = prompt("Donne la bonne réponse pour: " + nombre1 + "+" + nombre2 + "?");
        return reponse;
}

La variable reponse est pas déclarée (var), et peut etre omise :

function demanderAddition(nombre1, nombre2) {
	return prompt("Donne la bonne réponse pour: " + nombre1 + "+" + nombre2 + "?");
}
function comparerNombres(x, y) {
	if(x == y) {
  	return true;
  } else {
  	return false;
  }
}

Peut etre simplifié en :

function comparerNombres(x, y) {
    return (x == y);
}







  • Partager sur Facebook
  • Partager sur Twitter
18 mars 2016 à 16:44:55

Fiddle de Loxort modifié avec mes remarques précédentes et ajout de l'affichage du score sur la page : https://jsfiddle.net/ghorg12110/s2y5f8qz/2/

Afficher le score:

HTML:

<div id="score">Score: 0</div>

JS:

document.getElementById("score").innerHTML = "Score : " + score;




  • Partager sur Facebook
  • Partager sur Twitter
18 mars 2016 à 17:19:06

@ghorg12110 : Tout à fait, cependant, je pense qu'il est préférable de bien décomposer les étapesdans un premier temps afin que ça soit plus compréhensible.

TheChic1721 a écrit:

Serais-ce quand même possible de "l'extraire" de sa boîte pour pouvoir l'inclure sur la page (et non en "pop-up"), il faudrait utiliser du PHP?

Et sinon, serais-ce possible d'ajouter un petit message pour féliciter ou encourager l'utilisateur quand il répond bien ou mal?

Ça dépend du contexte général. Est-ce un nouveau site ? Quelles sont toutes les fonctionnalités à développer ? Les informations doivent-ils être gardées en mémoire ? ghorg12110 a donné une solution mais je ne pense pas que le fait de te donner des morceaux de code disparates va réellement t'aider.

Je trouve que l'exercice est très complet mais aussi difficile. Je relève particulièrement quatre étapes :

  • Inventer un "problème", une idée à informatiser
  • Expliquer le problème afin de le partager avec d'autres personnes (utilisation du français, de schémas, etc.)
  • Proposer un modèle informatique (ça reprend un peu mon message précédent où on peut voir des termes comme "fonction" ou des notions d'entrées / sorties). Dans les cas les plus simples, il s'agit juste d'un algorithme mais avec un site web, l'organisation est déjà beaucoup plus complexe.
  • Implémenter le modèle informatique (programmation).

Ce que je te propose, c'est que tu expliques le résultat final que tu souhaites obtenir (étape 1 et 2). Ensuite, on pourra t'aider plus précisément sur les étapes 3 et 4 pour la représentation informatique (l'organisation du code, la décomposition du problème, l'algorithmique, les spécificités de certains langages, etc.). Pour finir, le fait que tu te fixes des objectifs intermédiaires est une très bonne idée à mon avis.

-
Edité par Loxort 18 mars 2016 à 17:20:17

  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2016 à 11:17:10

Alors, j'ai trouvé un moyen plus facile de le faire, j'ai créer une table pour "créer" un menu. Dans ce tableau, nous pouvons cliquer sur des boutons, en cliquant sur ce bouton, on nous propose un calcul à faire suivant la méthode choisie (Tout simple pour l'instant: addition, soustraction, multiplication, division), au bout de cinq calculs (voir plus, je verrai), on nous donne un score final avec un message d'encouragement ou de félicitations.

Je n'ai pas pu ramener le travail car je ne trouve ma clé USB mais je vous le copierais ici.

Après, j'ai utiliser le code de @Loxort, je l'ai copié pour la soustraction et j'ai essayer avec la multiplication mais faute de temps, je n'ai pas pu le finir (j'ai du *quand même* créer le site, en tout cas le titre et le tableau avec les boutons!)

Merci à vous deux pour votre aide! Je trouve ça très sympa de m'aider! Surtout que la programmation est important, je veux devenir développeur! ;)

  • Partager sur Facebook
  • Partager sur Twitter
7 août 2020 à 2:38:01 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


7 août 2020 à 2:46:07

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter