/* Jeu des dix pièces alignées
               pions
               grenouilles ...
	deux.js (C) 2009 Jean-Paul Davalan
	le programme javascript deux.js est utilisé sur la page
        http://jeux-et-mathematiques.davalan.org/jeux/solitaires/dix/index.html
	(ou sur les pages équivalentes des sites miroirs)
*/
function jeu() {
	this.ncases=10
	this.cases=new Array()
	this.ncoups=0
	this.njoues=0
	this.ngains=0
	this.etat = "attente"

	this.alerte = function() {
	}

	this.initpartie = function() {
		//alert("initpartie")
		document.getElementById("resultat").innerHTML=""
		this.ncoups=0
		for(i=0; i< this.ncases; i++) this.cases[i] = 1;
		this.affiche()
	}

	this.init = function() {
		this.njoues=this.ngains=0
		this.initpartie()
	}
	this.clic = function(k, sens) {
		//alert(this.etat+" "+k+" "+sens)
		if(this.etat != "attente") {
			this.alerte()
			return;
		}
		//alert(this.cases[k])
		if(this.cases[k]!=1) {
			this.alerte()
			return;
		}
		
		var p = this.teste(k, sens)
		//alert("teste "+p)
		if(0<=p && p<10) {
			this.effect(k, p)
		} else {
			this.alerte() 
			//alert(this.possible2())
			if( ! this.possible()) {
				this.finpartie(false) 
			}
		}
	}
	this.teste= function(k, sens) {
		if(this.cases[k]!=1) return -1
		var u=0
		var t = (sens==-1) ? -1 : 1
		for(var i=k+t; i>=0 && i< this.ncases && u<3; i+=t) {
			if(this.cases[i]>=1) {
					u++
					if(u==3) {
						if(this.cases[i]==1) {
							return i
						} else {
							return -1
						}
					}
			}		
		 } 
		return -1
	}

	this.possible2 = function() {
		for(var s = -1; s<=1; s+=2) {
			for(var i=0; i<this.ncases; i++) {
				if( this.cases[i]==1 && this.teste(i, s) >=0) return i+" "+s
			}
		}
		return "false"
	}
        this.possible = function() {
                for(var s = -1; s<=1; s+=2) {
                        for(var i=0; i<this.ncases; i++) {
                                if( this.teste(i, s) >=0) return true
                        }
                }
                return false
        }

	this.effect = function(k, p) {
		this.ncoups++
		this.cases[k]=0;
		this.cases[p]=2
		if(this.ncoups == this.ncases/2) {
			this.ngains++
			//this.njoues++
			this.finpartie(true)
		}
		this.affiche()
	}
	
	this.affiche = function() {
		for(var i=0; i<this.ncases; i++) {
			document.images["im"+i].src = imge[this.cases[i]].src
		}			
	}
	this.finpartie = function(b) {
		var s 
		this.njoues++
		if(b==true) {
			s = "<span style='color:green;font-weight:bolder'>BRAVO.</span> Vous avez réussi à obtenir cinq tas de deux pièces."
		} else {
			s = "<span style='color:red'>Le jeu est bloqué,</span> vous ne pourrez pas obtenir cinq tas de deux pièces dans cette partie."
		}
		if(this.ngains==0) {
			s += "<br>Vous n'avez gagné aucune partie "
		} else if(this.ngains==1) {
			s += "<br>Vous avez gagné une partie "
		} else {
			s += "<br>Vous avez gagné "+ this.ngains+" parties "
		}
		if(this.njoues==1) {
			s += "sur une partie jouée. <br>"
		} else if(this.njoues>1) {
			s += " sur "+this.njoues+" parties jouées.<br>"
		}
		s += "<br />Vous pouvez jouer une nouvelle partie en cliquant sur le bouton [Nouvelle partie]"
		document.getElementById("resultat").innerHTML=s
	}

}


var imge = new Array(3);

for(var i=0; i<3; i++) {
	imge[i] = new Image()
	imge[i].src = "a"+i+".jpg"
}

var x = new jeu()


function clk(k, s) {
	//alert(k+" "+s)
	x.clic(k, s)
	
}

function partie() {
	//alert("partie")
	x.initpartie()
}
		
function reinit() {
	x.init()
}


