summaryrefslogblamecommitdiff
path: root/static/outilspage.js
blob: b8db8b3489f783ce4a5f7c5c26afa776e831c874 (plain) (tree)
























































































































































                                                                                                                               
/* Calcul des scores */
var points_par_case = 1 ;
var points_par_ligne = 10 ;



// Couleurs des cases
var couleur_base = "rgb(238, 238, 238)" ;
var couleur_valide = 'rgb(255, 136, 136)' ;


// Valide la case et la colore en rouge
function validecase(elem) {
	elem.style.backgroundColor = couleur_valide ;
	
	detectelignes() ;
}

// efface la grille
function effacegrille() {
	var table=document.getElementById("grille") ;
	var listetd = table.getElementsByTagName("td") ;
	for (var i=0; i< listetd.length; i++){
		listetd[i].style.backgroundColor = couleur_base ;
	}
	metscore(0) ;
}

// mettre à jour le score si on veut
function metscore(score) {
	document.getElementById("score").innerHTML = score ;
}

// Compte les lignes, colonnes et diagonales de la grille et met à jour le score
function detectelignes(elem) {
	var table=document.getElementById("grille") ;
	var listelignes = table.getElementsByTagName("tr") ;
	var nblignes = listelignes.length ;
	var nbcolonnes = listelignes[0].children.length ;
	var i, j ;
	
	// lignes
	var nb_lignes_completes = 0 ;
	var remplie ;
	for(i=0; i<nblignes; i++) {
		remplie = true ;
		for(j=0; j<nbcolonnes; j++) {
			//alert(j) ;
			//alert(listelignes[i].children[j].style.backgroundColor) ;
			if(listelignes[i].children[j].style.backgroundColor != couleur_valide)	{
				// c'est pas une ligne, dommage
				remplie = false ;
				//alert("la ligne "+i+"n'est pas remplie, vu à la colonne "+j) ;
				break
			}
		}
		if(remplie) {
			nb_lignes_completes+=1 ;
		}
	}
	
	// Colonnes
	var nb_colonnes_completes = 0 ;
	for(j=0; j<nbcolonnes; j++) {
		remplie = true ;
		for (i=0; i<nblignes; i++) {
			if(listelignes[i].children[j].style.backgroundColor != couleur_valide)	{
				// c'est pas une colonne, dommage
				remplie = false ;
				break
			}
		}
		if (remplie) {
			nb_colonnes_completes+=1 ;
		}
	}

	// Diagonales.
	var nb_diagonales_1 = 0 ;
	var nb_diagonales_2 = 0 ;
	if(nblignes <= nbcolonnes) {
		// Les diagonales se comptent horizontalement : "\\\" et "///"
		for(i=0; i<nbcolonnes - nblignes +1; i++) {
			// diagonales "\"
			remplie=true ;
			for(j=0; j<nblignes; j++) {
				if(listelignes[j].children[i+j].style.backgroundColor != couleur_valide)	{
					remplie = false
					break
				}
			}
			if (remplie) {
				nb_diagonales_1+=1
			}
			
			// diagonales "/"
			remplie=true ;
			for(j=0; j<nblignes; j++) {
				if(listelignes[j].children[nbcolonnes-i-j-1].style.backgroundColor != couleur_valide)	{
					remplie = false
					break
				}
			}
			if (remplie) {
				nb_diagonales_2+=1
			}
		}
		
	} else { // les diagonales vont se compter "verticalement"
		for(i=0; i<nblignes - nbcolonnes +1; i++) {
			// diagonales "\"
			remplie=true ;
			for(j=0; j<nbcolonnes; j++) {
				if(listelignes[i+j].children[j].style.backgroundColor != couleur_valide)	{
					remplie = false
					break
				}
			}
			if (remplie) {
				nb_diagonales_1+=1
			}
			
			// diagonales "/"
			remplie=true ;
			for(j=0; j<nbcolonnes; j++) {
				if(listelignes[nblignes -i-j-1].children[j].style.backgroundColor != couleur_valide)	{
					remplie = false
					break
				}
			}
			if (remplie) {
				nb_diagonales_2+=1
			}
		}
		
		
	}
	// Compter les cases utilisées
	var nbcases = 0 ;
	for(i=0; i<nblignes; i++) {
		for(j=0; j<nbcolonnes; j++) {
			if (listelignes[i].children[j].style.backgroundColor == couleur_valide) {
				nbcases+=1
			}
		}
		
	}
	
	
	// Mettre le score à jour
	score = (nb_lignes_completes + nb_colonnes_completes + nb_diagonales_1 + nb_diagonales_2) *points_par_ligne + nbcases ;
	metscore(score) ;
}