Puissance 4

Soyez le premier à donner votre avis sur cette source.

Vue 22 858 fois - Téléchargée 1 776 fois

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

Ajouter un commentaire

Commentaires

J'aurai fait mieux, un peu plus simple la prochaine fois ?
Messages postés
19
Date d'inscription
dimanche 19 septembre 2004
Statut
Membre
Dernière intervention
23 janvier 2014

si je veux faire 6 de large sur 5 de hauteur que dois-je modifier s'il te plait?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
nan c'ets bon, c'ers juste que les .zip si tu mets des dossiers et que tu compresse avec winzip, ça se décompresse pas pareil sous kde...

ça marche pass mal ton script, mais l'ia est a revoir, c'est un peu facile
Messages postés
56
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
14 décembre 2017
1
si c'est portable. c'est sur quel navigateur que t'as un problème ?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
c'est pas portable... domage

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.