11548 sujets

JavaScript, DOM et API Web HTML5

Je suis entrain de faire un petit jeu de mémoire et j'ai une variable qui affiche le record le plus bas mais quand je clic sur le bouton nouvelle partie mon record reste la jusqu'a la tout est bon mais quand je finit la partie le nouveau pointage prend la place du record meme s'il est plus élever j'ai écrit cette ligne de code mais elle garde pas la valeur la plus basse elle est remplacer a toute les partie par le nouveau score
Merci d'avance pour votre aide
var min_score = Number.MAX_VALUE;
	min_score = Math.min( min_score, tentatives);
	document.getElementById('affRecord').innerHTML = min_score;

Voici mon code au complet
//Variable Globale
nombre=0;
points=0;
tentatives=0;
//function Init pour réinitialiser la partie et la distribution des cartes
function init(){
	img=new Array(20);
		for (i=0;i<10;i++){
			img[i]=i+1;
			img[i+10]=i+1;
		}
		for (i=0;i<20;i++){
			a=rnd(20);
			b=img[a];
			img[a]=img[i];
			img[i]=b;
		}
	points=0;
	tentatives=0;
	document.getElementById('affNbCoup').innerHTML='0';
	var i = 0;
		for (i=0;i<=20;i++){
			document.getElementById('cartepos'+i).src='0.png';
		}
}
//function joue 
function joue(i){
	if (img[i]!=-1){
		if (nombre==0){
			nombre=1;
			case1=i;
			change(i,img[i]+'.png',0);
		}else if (nombre==1){
			case2=i;
			change(i,img[i]+'.png',0);
//compte le nombre de coup et affichage nombre de coup
			tentatives++;
			document.getElementById("affNbCoup").innerHTML=tentatives;
			
//vérification si les cartes sont identique
			if (img[case1]==img[case2]){
				points++;
				img[case1]=-1;
				img[case2]=-1;
				if (points==10){
//affiche le record
					var min_score = Number.MAX_VALUE;
					min_score = Math.min( min_score, tentatives);
					document.getElementById('affRecord').innerHTML = min_score;
//message lorsque la partie est terminer
					alert("Vous avez gagné");
				}
			}else{
				setTimeout("change("+case1+",'0.png',0);change("+case2+",'0.png',0);", 1000);
			}
			nombre=0;
		}
	}pro();
}
//function change pour le changement d'image avec timer
function change(image, j, avancement)
{	
	document.images[image].src=j;
	avancement++;
	if (avancement<23)setTimeout("change("+image+", '"+j+"', "+avancement+");",10);
}
//function rnd pour distribuer les cartes jamais dans le meme ordre
function rnd(n)
{
	var temp = Math.random();
	if (temp==1) temp=0.9;
	return Math.floor(temp * n);
}
//function nouvellepartie pour réinitialiser la partie lors du clic sur le bouton nouvelle partie
function nouvellePartie(){
	init();
}
//Function pro pour la version pro du jeu limite les coup a 20
function pro(){
	if(document.getElementById("checkPRO").checked == true){
		if(tentatives===20){
			alert("Partie Terminer")
		}
	}
}
//Pour initialiser la function init sur le onload
onload=init;	
[/i][/i][/i][/i][/i][/i]
Modifié par ricky250r (13 Apr 2012 - 00:29)
Bonjour,

Ta ligne de code est assez simple et devrait normalement te renvoyer la valeur souhaiter. Alors, je te conseillerais de logger tes variables pour vérifier qu'elles ont bien les valeurs que tu attend:


console.log(min_score);
console.log(tentatives);

min_score = Math.min( min_score, tentatives);
// etc


Sinon, d'une note plus générale, tu éviteras plusieurs problèmes si tu déclare tes fonctions ainsi:


var init = function () {
  alert("j'initialise mon application");
}

// et tu appelle

init();


La forme plus "traditionnelle" et présente dans d'autres langages t’empêche de définir un scope (contexte) à tes fonctions, et elles pourraient aisément être écrasés par d'autres. C'est donc toujours une bonne pratique de déclarer tes fonctions en attribuant une fonction anonyme à une variable.

De même, à ce moment, il te sera conseiller de mettre ton code entre closure pour l'encapsuler et lui donner un contexte propre. Par exemple:


(function (window) { // ceci est le début de la closure
    // et ici, tu met tout ton code
    var init = function () {
        alert("j'initialise mon application");
    }

    // et tu appelle

    init();

}(window)); // et ceci est la fermeture de la closure

Modifié par Vaxilart (13 Apr 2012 - 04:53)