Puissance 4

Description

Un puissance 4 qui peut se jouer contre l'ordinateur ou contre un autre joueur. L'ordinateur a une IA très correct.

Source / Exemple :


<html>
<head>
<script language="javascript" src="scripts/idl.js">
</script>
<title>Iwaweb - Puissance 4</title>
</head>
<body>
L'intégration de ce jeu sur votre site nécessite obligatoirement l'ajout d'un lien vers <a href="http://www.iwaweb.net/">Iwaweb</a>(http://www.iwaweb.net/).
<script language="javascript">
jeu=new Array();
jeu=[[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]];
joueur1=1;
joueur2=0;
j1_win=0;
j2_win=0;
nul=0;
coup=0;
t1=50;
t2=100;
humain=1;
ordinateur=0;
occupe=0;
condi=1;
jouer=1;
t4=0;
for(a=0;a<7;a++)
{
	
	for(b=0;b<6;b++)
	{
		nomdudiv=a.toString()+b.toString();
		document.write("<div id='v"+nomdudiv+"' style='position:absolute;height:70px;width:70px;left:"+t2+"px;top:"+t1+"px' onclick='clic("+nomdudiv+")'><img src='images/pasdepion.gif' height='70' width='70'></div>");
		document.write("<div id='j"+nomdudiv+"' style='position:absolute;height:70px;width:70px;left:"+t2+"px;top:"+t1+"px;visibility:hidden'><img src='images/pion_jaune.gif' height='70' width='70'></div>");
		document.write("<div id='r"+nomdudiv+"' style='position:absolute;height:70px;width:70px;left:"+t2+"px;top:"+t1+"px;visibility:hidden'><img src='images/pion_rouge.gif' height='70' width='70'></div>");
		t1=t1+70;
	}
	t1=50;
	t2=t2+70;
}
document.write("<div id='player1' style='position:absolute;height:100px;width:100px;left:620px;top:90px'><form name='form1'><input type='button' value='Joueur 1' name='j1' onclick='verif(\"form1\")'><br><br><input type='text' name='resultj1' size='4' value='0'></form></div>");
document.write("<div id='player2' style='position:absolute;height:100px;width:100px;left:620px;top:190px'><form name='form2'><input type='button' value='Joueur 2' name='j2' onclick='verif(\"form2\")'><br><br><input type='text' name='resultj2' size='4' value='0'></form></div>");
document.write("<div id='adversaire' style='position:absolute;height:100px;width:100px;left:620px;top:290px'>Adversaire :<form name='form3'><input type='radio' name='ba' onclick='choix()' checked>Humain<br><br><input type='radio' name='ba' onclick='choix()'>Ordinateur</form><input type='reset' value='Recommencer' name='restart'  onclick='demarrer()'></div>");

function verif(formname)
{
	if(formname=="form1")
	{
		document.form1.j1.value=prompt("Quel est votre nom Joueur 1 ?",document.form1.j1.value);
		if(joueur1)
		{
			window.status="A vous "+document.form1.j1.value;
		}
	}
	if(formname=="form2")
	{
		document.form2.j2.value=prompt("Quel est votre nom Joueur 2 ?",document.form2.j2.value);
		if(joueur2)
		{
			window.status="A vous "+document.form2.j2.value;
		}
	}
}
function choix()
{
	if(humain)
	{
		humain=0;
		ordinateur=1;
		mode=0;
	}
	else
	{
		humain=1;
		ordinateur=0;
		mode=1;
	}

	document.form1.resultj1.value=0;
	document.form2.resultj2.value=0;
	joueur1=1;
	joueur2=0;
	window.status="A vous "+document.form1.j1.value;
	demarrer();
}
function clic(nom)
{
	if(condi){coup++;}
	if(joueur1 && !occupe && condi)
	{
		n1=Math.floor(nom/10);
		for(a=0;a<6;a++)
		{
			if(jeu[n1][a]){break;}
		}
		b=0;
		reponse=1;
		compl="j";
		jeu[n1][a-1]=1;
		animation();			
	}
	else
	{
		if(!occupe && condi)
		{
			n1=Math.floor(nom/10);
			for(a=0;a<6;a++)
			{
				if(jeu[n1][a]){break;}
			}
			b=0;
			compl="r";
			jeu[n1][a-1]=2;
			animation();					
		}
	}
	if(ordinateur)
	{
		if(!occupe && joueur2)
		{
			condi=1;
			jouer=1;
			if(coup==0)
			{
				n1=3;
				a=6;
				jouer=0;
			}
			if(coup==1 && jouer)
			{
				for(a=0;a<7;a++)
				{
					if(jeu[a][5]==1){break;}
				}
				if(!a || a==6)
				{
					n1=3;
				}
				else
				{
					t1=Math.round(Math.random());
					if(!t1){n1=a-1;}
					if(t1){n1=a+1;}
				}
				a=6;
				jouer=0;
			}
			verticale_ordi("total==6");
			horizontale_ordi("total==6");
			diago_ordi("f=0","f<4","f++","total==6",0);
			diago_ordi("f=0","f<4","f++","total==6",5);
			diago_ordi("f=6","f>2","f--","total==6",0);
			diago_ordi("f=6","f>2","f--","total==6",5);
			verticale_ordi("total==3");
			horizontale_ordi("total==3");
			diago_ordi("f=0","f<4","f++","total==3",0);
			diago_ordi("f=0","f<4","f++","total==3",5);
			diago_ordi("f=6","f>2","f--","total==3",0);
			diago_ordi("f=6","f>2","f--","total==3",5);
			
			
			if(jouer)
			{
				t4=0;
				while(condi)
				{
					t4++;					
					n1=Math.round(Math.random()*6);
					for(a=0;a<6;a++)
					{
						if(jeu[n1][a]){break;}
					}
					
					if(a==1 || (a<=6 && t4>=100 && a>0)){break;}
					if(a<=6 && t4<100 && a>1)
					{
						t1=a;
						jeu[n1][a-1]=2;
						jeu[n1][a-2]=1;
						joueur1=1;
						joueur2=0;

						gagner();

						a=t1;	
						jeu[n1][a-2]=0;
						joueur2=1;
						joueur1=0;
						
						if(j1_win)
						{
							jeu[n1][a-1]=0;
							j1_win=0;							
						}
						else
						{
							j1_win=0;
							break;
						}
					}
				}
				t4=0;
			}			
			b=0;
			compl="r";
			jeu[n1][a-1]=2;
			coup++;
			animation();				
		}
		else
		{
			if(!joueur2)
			{
				if(reponse)
				{
					condi=0;
					setTimeout("clic(0)",50);
				}
				else
				{
					condi=1;
				}
			}
		}
	}		
}

function animation()
{
	occupe=1;
	n2=compl+n1.toString()+b.toString();
	n3=compl+n1.toString()+(b-1).toString();
	
	if(!b)
	{
		visibilitecalque(n2,"visible");
	}
	else
	{
		visibilitecalque(n3,"hidden");
		visibilitecalque(n2,"visible");
	}
	if(a-1>b){b++;setTimeout("animation()",100);}
	else
	{
		if(joueur1)
		{
			gagner();
			joueur1=0;
			joueur2=1;
			window.status="A vous "+document.form2.j2.value;			
		}
		else
		{
			gagner();
			joueur1=1;
			joueur2=0;
			window.status="A vous "+document.form1.j1.value;
		}
		if((j1_win || j2_win || nul) && !reponse)
		{
			demarrer();
			joueur1=1;
			joueur2=0;
			window.status="A vous "+document.form1.j1.value;			
		}
		if((j1_win || j2_win || nul) && reponse)
		{
			demarrer();
		}
		occupe=0;		
	}	
}

function gagner()
{
	if(joueur1)
	{
		total=1;
		for(a=0;a<3;a++)
		{
			for(b=a;b<4+a;b++)
			{
				total=jeu[n1][b]*total;
			}
			if(total==1){j1_win=1;break;}
			total=1;
		}
		
		total=1;
		for(a=0;a<6;a++)
		{
			for(b=0;b<4;b++)
			{
				for(c=b;c<4+b;c++)
				{
					total=jeu[c][a]*total;
				}
				if(total==1){j1_win=1;break;}
				total=1;
			}
		}
		diagonale("a=0","a<4","a++",0,1);
		diagonale("a=0","a<4","a++",5,1);
		diagonale("a=6","a>2","a--",0,1);
		diagonale("a=6","a>2","a--",5,1);
	}
	else
	{
		total=1;
		for(a=0;a<3;a++)
		{
			for(b=a;b<4+a;b++)
			{
				total=jeu[n1][b]*total;
			}
			if(total==16){j2_win=1;break;}
			total=1;
		}
		total=1;
		for(a=0;a<6;a++)
		{
			for(b=0;b<4;b++)
			{
				for(c=b;c<4+b;c++)
				{
					total=jeu[c][a]*total;
				}
				if(total==16){j2_win=1;break;}
				total=1;
			}	
		}
		diagonale("a=0","a<4","a++",0,2);
		diagonale("a=0","a<4","a++",5,2);
		diagonale("a=6","a>2","a--",0,2);
		diagonale("a=6","a>2","a--",5,2);
	}
	if(!t4)
	{
		if(!j1_win && !j2_win && coup==42)
		{
			nul=1;
		}
		if(j1_win)
		{
			endgame();
		}
		if(j2_win)
		{
			endgame();
		}
		if(nul)
		{
			endgame();
		}
	}
}

function diagonale(c1,c2,c3,val1,pl)
{
	total=1;
	for(eval(c1);eval(c2);eval(c3))
	{
		b=a;
		c=val1;
		
		for(d=0;d<3;d++)
		{
			if(c3.indexOf('-')!=-1){b=a-d;}
			else{b=a+d;}
			if(!val1){c=d;}
			else{c=val1-d;}

			for(e=0;e<4;e++)
			{
				if(b<0 || b>6){total=0;break;}	
				
				total=jeu[b][c]*total;

				if(c3.indexOf('-')!=-1){b--;}
				else{b++;}
				if(!val1){c++;}
				else{c--;}	
			}

			if(pl==1)
			{
				if(total==1)
				{
					j1_win=1;
				}
			}
			else
			{
				if(total==16)
				{
					j2_win=1;
				}
			}
			total=1;			
		}
	}
}

function diago_ordi(c1,c2,c3,c4,val1)
{
	if(jouer)
	{
		total=0;
		for(eval(c1);eval(c2);eval(c3))
		{
			b=f;
			c=val1;
			
			for(d=0;d<3;d++)
			{
				if(c3.indexOf('-')!=-1){b=f-d;}
				else{b=f+d;}
				if(!val1){c=d;}
				else{c=val1-d;}
	
				for(e=0;e<4;e++)
				{
					if(b<0 || b>6 || (jeu[b][c]==1 && c4=="total==6")){total=0;break;}
					if(b<0 || b>6 || (jeu[b][c]==2 && c4=="total==3")){total=0;break;}
										
					if(!jeu[b][c]){t1=b;t2=c;}
					total=jeu[b][c]+total;
	
					if(c3.indexOf('-')!=-1){b--;}
					else{b++;}
					if(!val1){c++;}
					else{c--;}	
				}
	
				if(eval(c4))
				{
					if(t2<5)
					{
						if(jeu[t1][t2+1])
						{
							arret=1;	
							n1=t1;
							a=t2+1;
							break;
						}
					}
					else
					{
						arret=1;	
						n1=t1;
						a=t2+1;
						break;
					}
				
				}
				t1=0;
				t2=0;
				total=0;
			}
			if(arret){break;}
		}
		if(arret){jouer=0;}
	}
}

function verticale_ordi(c1)
{
	if(jouer)
	{
		total=0;
		arret=0;
		for(b=0;b<7;b++)
		{
			for(c=0;c<3;c++)
			{
				for(d=c;d<4+c;d++)
				{
					if(jeu[b][d]==1 && c1=="total==6"){total=0;break;}
					if(jeu[b][d]==2 && c1=="total==3"){total=0;break;}
					total=jeu[b][d]+total;
				}
				if(eval(c1))
				{
					if(!jeu[b][c])
					{
						n1=b;
						a=c+1;
						arret=1;
						break;
					}
				}
				total=0;
			}
			if(arret){break;}
		}
		if(arret){jouer=0;}
	}
}

function horizontale_ordi(c1)
{
	if(jouer)
	{
		total=0;
		arret=0;
		for(b=0;b<6;b++)
		{
			for(c=0;c<4;c++)
			{
				for(d=c;d<4+c;d++)
				{
					if(jeu[d][b]==1 && c1=="total==6"){total=0;break;}
					if(jeu[d][b]==2 && c1=="total==3"){total=0;break;}
					total=jeu[d][b]+total;
				}
				if(eval(c1))
				{
					for(d=c;d<4+c;d++)
					{
						if(!jeu[d][b]){break;}
					}
					if(b<5)
					{
						if(jeu[d][b+1])
						{
							arret=1;	
							n1=d;
							a=b+1;
							break;
						}
					}
					else
					{
						arret=1;	
						n1=d;
						a=b+1;
						break;
					}
				}
				total=0;
			}
			if(arret){break;}
		}
		if(arret){jouer=0;}
	}
}

function endgame()
{
	if(j1_win)
	{
		reponse=confirm("Bravo "+document.form1.j1.value+" vous avez gagné.\nNouvelle partie ?");
		document.form1.resultj1.value++;
	}
	if(j2_win)
	{
		reponse=confirm("Bravo "+document.form2.j2.value+" vous avez gagné.\nNouvelle partie ?");
		document.form2.resultj2.value++;		
	}
	if(nul)
	{
		reponse=confirm("Match nul.\nNouvelle partie ?");
	}
	if(!reponse)
	{
		document.form1.resultj1.value=0;
		document.form2.resultj2.value=0;
	}	
}

function demarrer()
{
	for(a=0;a<7;a++)
	{
		for(b=0;b<6;b++)
		{
			jeu[a][b]=0;
			nomdudiv=a.toString()+b.toString();
			visibilitecalque("j"+nomdudiv,"hidden");
			visibilitecalque("r"+nomdudiv,"hidden");
		}
	}
	coup=0;
	nul=0;
	j1_win=0;
	j2_win=0;	
}
window.status="A vous "+document.form1.j1.value;
</script>
</body>
</html>

Conclusion :


MAJ du 6/06/2003 :
Le script est desormais compatible avec Mozilla, Netscape, IE, Opera grace à l'utilisation de la librairie DHTML IDL(que vous pouvez télécharger sur http://www.iwaweb.net).

Si vous intégrez ce jeu sur votre site, vous devez mettre un lien vers Iwaweb.

Retrouvez les dernières MAJ sur http://www.iwaweb.net/

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.