

//function clk(a, b) { alert(a+" "+b) }

/* Automate 

	"affiche boites" 0) affichage des contenus
		durée limitée (3 s)
		puis passage à l'état 0

	"choix pieces" 1) choix aléatoire des boîtes oo aa oa et 
		choix de la position gauche ou droite de l'or et de l'argent dans la boîte oa
		aller en 1)

	"choix joueur" 2) attente choix joueur
			
	
			 après choix joueur
		boîte : 0 1 ou 2
		côté : 0 ou 1  (gauche ou droite)

		a) si c'est la boîte aa ou si c'est la couleur a de la boîte mixte
				affichage des boîtes etat 0 "affiche boites"


		b) si c'est la boîte 00 ou l'or de la boîte mixte, affichage de l'unique pièce d'or connue
			passage à l'état 3

	"choix autre"" 3) attente du choix de la couleur or ou argent
		
		après appui passage en 4)

	"calcul score" 4) calcul du score et affichage
		affichage des pièces pendant une durée déterminée (3 s)

		affichage ???
		si partie terminée, affichage gains de la partie aller en 0)
		sinon attente de continuation en 0)

	"stop" 5) appui sur mise à zéro
		aller en 0)

*/

var etat="choix pieces" // "affiche boites"  // 0 "affiche boites" 1 "choix pieces" 2  3  4

// var boites= new Array(0, 1, 2)
// for(var i=0; i<3; i++) { boites[i] = new Array(0, 0)}

// indirection vers un type de contenu 0: oo,  1 : oa ou ao,  2 : aa
// (valeurs données en exemple et non par défaut !)
var indBoite=new Array(0, 1, 2)  	// 0 : 2Or  1 : Or-Argt     2 : 2Argt
// la boîte or-argent est oa ou ao, (valeur 0 donnée seulement en exemple)
var orArgt=0		//  0 : Or à gauche  Argent à droite  1 : Argent à gauche, Or à droite

// couleur de l'autre pièce
var couleur = 0
// id pour timeOut,  delai : durée d'affichage en ms

var id, delai=1200
// nparties : nb de parties jouées, nbons : nb de points dans la partie,  pourcent : pourcentage de points/coups
var nparties=0, nbons=0, nchoix=0, pourcent=0, lgpartie=10, pgagnes=0;


// arrêt brutal des parties et remise à 0 des compteurs
function reset() {
	temp()
	nparties=0
	nchoix=0
	pgagnes=0
	nbons=0
	pourcent=0
	afficheGains()
	effaceBoites();
	etat = "choix pieces"
	choixBoites()
}

function semireset() {
        temp()
        nchoix=0
        nbons=0
        pourcent=0
        afficheGains()
        effaceBoites();
        etat = "choix pieces"
        choixBoites()
}

// construit dans t une bijection sur 0, 1, 2, ..., k-1
function bij(t, k) {
	for(var i=0; i<k; i++) {
		t[i]=i  // initialisation 0, 1, 2, ...
	}
	for(var i=k-1;i>0;i--) {
		var u = Math.floor((i+1)*Math.random())
		var c = t[u]
		t[u]=t[i]
		t[i]=c
	}
}

// change les images des pièces dans les boîtes en ? ?
// efface les deux boutons Or Argent
function effaceBoites() {
	document.images["ima0"].src="images/boitevv.png"
	document.images["ima1"].src="images/boitevv.png"
	document.images["ima2"].src="images/boitevv.png"
	document.images["bouton0"].src="images/btOr0.png"
	document.images["bouton1"].src="images/btAgt0.png"
	document.images["bouton0"].style.display="none"
	document.images["bouton1"].style.display="none"
	temp()
}

// affiche les deux boutons [Or] [Argent]
function afficheBoutons() {
	temp()
	afficheBoitePartielle()
	document.images["bouton0"].style.display="inline"
	document.images["bouton1"].style.display="inline"

	etat = "choix autre"
	temp()
}
function afficheBoitePartielle() {
	document.images["ima0"].src="images/boitetrans.png"
	document.images["ima1"].src="images/boitetrans.png"
	document.images["ima2"].src="images/boitetrans.png"
	document.images["ima"+ajoueur].src=((bjoueur==0)? "images/boiteov.png" : "images/boitevo.png")
}

// choix des contenus des 3 boîtes
function choixBoites() {
	temp()
	if(etat !== "choix pieces" ) return
	effaceBoites()

	bij(indBoite,3) //  indBoite[i] contient 0 1 ou 2

	orArgt=Math.floor(2*Math.random())   // 0 or  1 Argent
	etat = "choix joueur"
	temp()
}

var ajoueur=0, bjoueur=0

// clic sur l'une des boîtes   a : la boîte     b : le côté
function clk(a, b) {  
	temp()
	ajoueur = a
	//couleur = b
	bjoueur = b
	temp()
	if(etat != "choix joueur" ) return

	     // le 2 pas utile
	//alert("bij : "+indBoite+ "\norArgt : "+orArgt+"\nboîte : "+a+" côté : "+b)
	// a est la boîte 0 1 ou 2
	// b est le côté  0 ou 1
	var bte = indBoite[a]   // 0 : 2or,  1 : Or-Argt,   2 : 2Argt
	if(bte == 2 || (bte==1 && orArgt != b)) { // que de l'argent ou de l'argent
		// aller en -1       coup nul
		etat = "affiche boites"
		affichePieces()
	} else { // a choisi de l'or dans la boîte
		// passage à l'état 3
		if(bte==0) {
			couleur=0
		} else {
			couleur=1
		}
		afficheBoutons()
	}
}


function afficheGains() {
	document.getElementById("jeux").innerHTML = "<em><strong>Partie n° "+(nparties+1)+"</strong></em><br />Dans la partie en cours, vous avez gagné "+ nbons + 
		" jeu"+((nbons>1)?"x":"")+" sur "+nchoix+" joué"+((nchoix>1)?"s":"")+"<br />"

	temp("afficheGains")
}
function affichePartie() {
	
	document.getElementById("parties").innerHTML = "<em><strong>Score :</strong></em><br />Vous avez gagné "+ pgagnes +
                " partie"+((pgagnes>1)?"s":"")+" sur "+nparties+" jouée"+((nparties>1)?"s":"")+"<br />"

	temp("affichePartie")

}
function colr(b) {
	temp("colr "+b)
	// seulement dans l'état 3
	if(etat !="choix autre") {
		//alert("etat = "+etat)
		return;
	}
	if(b==couleur)  { // bon choix
		nbons++
		temp()
	}
	// alert(b+" "+couleur)
	//etat ="calcul score"
	nchoix++
	temp("nchoix++")
	pourcent = Math.floor(nbons*10000/nchoix)/100
	afficheGains()
	//affichePieces()
	if(nchoix==lgpartie) {
		if(nbons*2>nchoix) pgagnes++
		nparties++
		affichePartie()
		//semireset()
		nchoix=0
		pourcent=0
		nbons=0
		//affichePieces()
		//temp("colr nchoix==lgpartie")
	}
	// aller à l'état 0
	etat = "affiche boites"
	temp("affichePieces")
	affichePieces()
	if(id!=null) clearTimeout(id)
	etat = "choix pieces"
	id = setTimeout("choixBoites()",delai)
}

function affichePieces() {
	temp()
	if(etat !== "affiche boites") return
	temp()

	for(var i=0;i<3; i++) {
		var t = indBoite[i]  // 0 2or  1 : Or-Argt   2 : 2Argt
		if(t==0) {
		        document.images["ima"+i].src="images/boiteoo.png"
		} else if(t==1) {
			if(orArgt==0) {
		        	document.images["ima"+i].src="images/boiteoa.png"
			} else {
				document.images["ima"+i].src="images/boiteao.png"
			}
		} else if(t==2) {
		        document.images["ima"+i].src="images/boiteaa.png"
		}
	}
        document.images["bouton0"].style.display="none"
        document.images["bouton1"].style.display="none"
	etat = "choix pieces" 
	temp()
        if(id!=null) clearTimeout(id)
        id = setTimeout("choixBoites()",delai)
}

function temp() {
/* 
	var s = "<pre>"
	if(arguments != null)
		s +=arguments[0]+"\n"
	s +="etat = "+etat+"\n"
	s += "boîtes = "+indBoite[0]+" "+indBoite[1]+" "+indBoite[2]+"\n"
	s += "orArgt = "+orArgt+"\n"
	s += "choix joueur = "+ajoueur+"\n"
	s += "autre = "+bjoueur+"\n"
	s += "gain = "+nbons+"  jeux = "+nchoix+"\n"
	s += "</pre>"
	document.getElementById("tmp").innerHTML=s
*/
}

// choixBoites()

function _simule(n) {
	var tb= new Array(0, 0, 0)  // ident contraire  quelconque
	var m=0
	var k
	for( k=0 ;k<n; ) {
		m++
		var boite=Math.floor(3*Math.random())
		var col = Math.floor(2*Math.random())
		var hasard=Math.floor(2*Math.random()) // 0 ident  1 contraire
		if(boite==0 ) {
			k++
			tb[0]++
			if(hasard==0) tb[2]++
		} else if(boite==2 && col==0) {
			tb[1]++
			if(hasard==1) tb[2]++
			k++
		}
	}
	return {k:k, m:m, or:tb[0], argent:tb[1], aleatoire:tb[2]}
}

function simule() {
	var v = _simule(10000)
	document.getElementById("siml").innerHTML=
		"<br /><br />" +
		"En simulant "+v.m+" tirages aléatoires, la première pièce choisie était en or dans "+v.k+" cas" +
		"<br /><br />" +
		"Les résultats pour "+v.k+" tirages d'une première pièce en or sont, suivant les prédictions, pour la seconde pièce :<br /><br />" + 
		"1) Or : "+v.or+"<br />" +
		"2) Argent : " + v.argent+"<br />" + 
		"3) Au hasard : " + v.aleatoire+"<br />" +
		((v.or>v.argent && v.or > v.aleatoire)?"On a donc intérêt à choisir l'or comme seconde couleur":"")+
		"<br /><br />"
}


