begin process at 2012 02 05 22:53:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs Amusants

 > JEU DE LA VIE

JEU DE LA VIE


 Information sur la source

Note :
6,13 / 10 - par 8 personnes
6,13 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs Amusants Classé sous :conoway, jeu, vie Niveau :Expert Date de création :28/03/2005 Date de mise à jour :30/11/2005 13:44:04 Vu / téléchargé :6 563 / 502

Auteur : coucou747

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (34)
Ajouter un commentaire et/ou une note


 Description

un jeu de la vie (tout est expliqué)

Un jeu inventé par MC Conoway.

Source

  • <html>
  • <head>
  • <title>vie artificielle</title>
  • <style>
  • P{
  • font-size:10pt;
  • color:#000000;
  • }
  • P:first-letter {
  • font-size:20pt;
  • color:#7777FF;
  • }
  • .board{
  • position: absolute;
  • margin-left: 600px;
  • margin-top: 5px;
  • border-color:#0077FF;
  • color:#000000;
  • }
  • .food{
  • background-color: rgb(200, 250, 100);
  • }
  • .case{
  • background-color: rgb(100, 150, 250);
  • }
  • .cellule{
  • background-color: rgb(200, 0, 0);
  • }
  • .cellule_dead{
  • background-color: rgb(0, 0, 0);
  • }
  • </style>
  • </head>
  • <body>
  • <div id="log" cols="50" rows="7" style="position:absolute;margin-top:5px;margin-left:5px;">
  • </div>
  • <input type="button" id="acte" value="stop" onclick="controle();" style="position:absolute;margin-top:105px;margin-left:105px;"/>
  • <p style="position:absolute;margin-top:205px;margin-left:5px;width:550px;">Ceci est un jeu de la vie ! Le tableau est constitué de cases, ses dimentions sont de 15*15 cases, (ceci est définit en constantes, mais on peut le changer en modifiant les sources, seul deux lignes sont à changer...), chaque case peut contenir une cellule vivante ou morte, de la nouriture ou rien du tout... Les cellules se déplacent, elles ne peuvent pas marcher sur de la nouriture, ni sur une cellule morte, encore moins sur une autre cellule... Lorsqu'elles trouvent de la nouriture, elles commencent à manger, jusqu'a épuisement des stocks. Lorsqu'elles mangent, elles retrouvent de l'énergie, quand elles se déplacent, elles perdent beaucoups d'énergie, quand elles ne font rien, elles en perdent un peu. Lorsqu'elles n'ont plus d'énergie, elles meurent, lorsqu'elles en ont plus de 100, elles se divisent.</p>
  • <script type="text/javascript">
  • const taille_x=15;
  • const taille_y=15;
  • var nbr_cellules=5;
  • var tour=0, started=1;
  • cellules=new Array(nbr_cellules); //le tableau qui contient les cellules
  • tab=new Array(taille_x); // le tableau qui contient les obstacles
  • food=new Array(taille_x); //le tableau qui contient l'emplacement de la nouriture
  • for (i=0;i<taille_x;i++){
  • food[i]=new Array(taille_y);
  • tab[i]=new Array(taille_y);
  • }
  • function afficher_case_details(vx,vy){
  • var i;
  • if (tab[vx][vy]){
  • if (food[vx][vy]){
  • alert("food : "+food[vx][vy]);
  • }else{
  • for (i=0;i<nbr_cellules;i++){
  • if (cellules[i].pos_x==vx && cellules[i].pos_y==vy){
  • alert(cellules[i].details());
  • }
  • }
  • }
  • }
  • }
  • function controle(){
  • /*
  • fonction qui permet de faire une pause
  • */
  • if (started==1){
  • document.getElementById('acte').value="continue";
  • started=0;
  • }else{
  • document.getElementById('acte').value="stop";
  • started=1;
  • startmove();
  • }
  • }
  • function Adn(a,b,c,d,e){
  • /*
  • La class ADN
  • */
  • this.turn=new Array(4);
  • this.want_to_turn=e;
  • this.give_turn=Adn_turn;
  • this.mute=Adn_muter;
  • this.details=Adn_details;
  • this.turn[0]=a;
  • this.turn[1]=b;
  • this.turn[2]=c;
  • this.turn[3]=d;
  • return(this);
  • }
  • function Adn_details(){
  • str="";
  • str+="0=>"+this.turn[0]+"\n";
  • str+="1=>"+this.turn[1]+"\n";
  • str+="2=>"+this.turn[2]+"\n";
  • str+="3=>"+this.turn[3]+"\n";
  • return str;
  • }
  • function Adn_muter(){
  • /*
  • Fonction qui fait muter l'ADN
  • */
  • var e=rnd(5);
  • var f=rnd(2)-1;
  • if (e<4)
  • this.turn[e]+=f;
  • else
  • this.want_to_turn+=f;
  • }
  • function Adn_turn(a,b,c,d, direction){
  • /*
  • les déplacements de la cellules sont stoqués dans l'adn
  • */
  • var tabl=new Array(4);
  • tabl[0]=a;
  • tabl[1]=b;
  • tabl[2]=c;
  • tabl[3]=d;
  • //alert(" a="+a+" b="+b+" c="+c+" d="+d);
  • var chose=-1, e;
  • if (a+b+c+d==1){
  • if (a==1) chose=0;
  • if (b==1) chose=1;
  • if (c==1) chose=2;
  • if (d==1) chose=3;
  • }else if (a==1 || b==1 || c==1 || d==1){
  • if (rnd(this.want_to_turn)!=1 && tabl[direction]==1){
  • chose=direction;
  • }else{
  • while (1)
  • {
  • e=rnd(4);
  • if ( tabl[e]==1 && rnd(this.turn[e])==1){ chose=e; break;}
  • }
  • }
  • }
  • return chose;
  • }
  • function Cellule(pos_x,pos_y, a, b, c, d){
  • /*
  • La class cellule
  • */
  • this.adn=new Adn(a, b, c, d);
  • this.etat=1;
  • this.food=50;
  • this.pos_x=pos_x;
  • this.pos_y=pos_y;
  • this.direction=0;
  • this.afficher=Cellule_afficher;
  • this.bouger=Cellule_bouger;
  • this.camoufler=Cellule_camoufler;
  • this.details=Cellule_details;
  • return(this);
  • }
  • function Cellule_details(){
  • var str="";
  • str=(this.etat==1)?"Cellule vivante\n":"Cellule morte\n";
  • str+="food : "+this.food+"\n";
  • str+=this.adn.details();
  • return str;
  • }
  • function Cellule_afficher(){
  • /*
  • la fonction qui permet d'afficher une cellule
  • */
  • if (this.etat==1)
  • document.getElementById('case_x_'+this.pos_x+'_y_'+this.pos_y).setAttribute("class","cellule");
  • else
  • document.getElementById('case_x_'+this.pos_x+'_y_'+this.pos_y).setAttribute("class","cellule_dead");
  • tab[this.pos_x][this.pos_y]=1;
  • }
  • function Cellule_camoufler(){
  • /*
  • la fonction qui efface la cellule
  • */
  • document.getElementById('case_x_'+this.pos_x+'_y_'+this.pos_y).setAttribute("class","case");
  • tab[this.pos_x][this.pos_y]=0;
  • }
  • function Cellule_bouger(){
  • /*
  • la fonction qui fait se déplacer la cellule
  • */
  • var retour=0;
  • if (this.etat==1){
  • var peut_bouger=new Array(4), i, have_move=1, manger=-1;
  • if (this.pos_y!=0)
  • if (food[this.pos_x][this.pos_y - 1]!=0) manger=0;
  • if (this.pos_x!=taille_x-1)
  • if (food[this.pos_x + 1][this.pos_y]!=0) manger=1;
  • if (this.pos_y!=taille_y-1)
  • if (food[this.pos_x][this.pos_y + 1]!=0) manger=2;
  • if (this.pos_x!=0)
  • if (food[this.pos_x - 1][this.pos_y]!=0) manger=3;
  • if (manger==-1){
  • peut_bouger[0]=0;
  • peut_bouger[1]=0;
  • peut_bouger[2]=0;
  • peut_bouger[3]=0;
  • if (this.pos_y!=0)
  • if (tab[this.pos_x][this.pos_y - 1]==0) peut_bouger[0]=1;
  • if (this.pos_x!=taille_x-1)
  • if (tab[this.pos_x + 1][this.pos_y]==0) peut_bouger[1]=1;
  • if (this.pos_y!=taille_y-1)
  • if (tab[this.pos_x][this.pos_y + 1]==0) peut_bouger[2]=1;
  • if (this.pos_x!=0)
  • if (tab[this.pos_x - 1][this.pos_y]==0) peut_bouger[3]=1;
  • i=this.adn.give_turn(peut_bouger[0],peut_bouger[1],peut_bouger[2],peut_bouger[3], this.direction);
  • switch (i){
  • case 0 :
  • this.pos_y--;
  • break;
  • case 1 :
  • this.pos_x++;
  • break;
  • case 2 :
  • this.pos_y++;
  • break;
  • case 3 :
  • this.pos_x--;
  • break;
  • default :
  • have_move=0;
  • break;
  • }
  • if (i!=-1) this.direction=i;
  • this.food-=have_move*2+1;
  • }else{
  • this.food+=20;
  • switch (manger){
  • case 0 :
  • food[this.pos_x][this.pos_y - 1]--;
  • if (food[this.pos_x][this.pos_y - 1]==0){
  • document.getElementById('case_x_'+this.pos_x+'_y_'+(this.pos_y-1)).setAttribute("class","case");
  • tab[this.pos_x][this.pos_y - 1]=0;
  • }
  • break;
  • case 1 :
  • food[this.pos_x+1][this.pos_y]--;
  • if (food[this.pos_x+1][this.pos_y]==0){
  • document.getElementById('case_x_'+(this.pos_x+1)+'_y_'+this.pos_y).setAttribute("class","case");
  • tab[this.pos_x+1][this.pos_y]=0;
  • }
  • break;
  • case 2 :
  • food[this.pos_x][this.pos_y+1]--;
  • if (food[this.pos_x][this.pos_y + 1]==0){
  • document.getElementById('case_x_'+this.pos_x+'_y_'+(this.pos_y+1)).setAttribute("class","case");
  • tab[this.pos_x][this.pos_y + 1]=0;
  • }
  • break;
  • case 3 :
  • food[this.pos_x-1][this.pos_y]--;
  • if (food[this.pos_x-1][this.pos_y]==0){
  • document.getElementById('case_x_'+(this.pos_x-1)+'_y_'+this.pos_y).setAttribute("class","case");
  • tab[this.pos_x-1][this.pos_y]=0;
  • }
  • break;
  • }
  • }
  • if (this.food<=0) //si la cellule doit mourrir...
  • this.etat=0;
  • if (100<this.food){ //si la cellule doit se diviser
  • this.food-=50;
  • retour =1;
  • }
  • }
  • return retour;
  • }
  • function startmove(){
  • /*
  • la fonction "main"
  • */
  • if (started==1){
  • tour++;
  • var a=0; log_="Il y a "+nbr_cellules+" cellules !<br />", en_vie=nbr_cellules, mortes=0;
  • for (i=0;i<nbr_cellules;i++){
  • cellules[i].camoufler();
  • a=cellules[i].bouger();
  • cellules[i].afficher();
  • if (cellules[i].etat==0){
  • en_vie--;
  • mortes++;
  • }
  • if (a==1){ //fait se diviser la cellule
  • cellules[nbr_cellules]=new Cellule(cellules[i].pos_x,cellules[i].pos_y, cellules[i].adn.turn[0], cellules[i].adn.turn[1], cellules[i].adn.turn[2], cellules[i].adn.turn[3], cellules[i].adn.want_to_turn);
  • cellules[nbr_cellules].adn.mute();
  • nbr_cellules++;
  • log_+="La cellule "+i+"se divise !<br />";
  • }
  • }
  • //affiche le log
  • log_+="Nous sommes au tour "+tour+".<br />Il y a "+en_vie+"cellules en vie et "+mortes+" cellules mortes...";
  • document.getElementById("log").innerHTML=log_;
  • setTimeout('startmove();',1000); //se rapelle
  • }
  • }
  • function rnd(n){
  • /*
  • un nombre au hasard
  • */
  • return Math.floor(Math.random()* n);
  • }
  • /*
  • On affiche le plateau
  • */
  • document.write('<table class="board">');
  • for (vy=0;vy<taille_y;vy++){
  • document.write('<tr>');
  • for (vx=0;vx<taille_x;vx++){
  • tab[vx][vy]=0;
  • if (rnd(10)==1){
  • food[vx][vy]=10;
  • tab[vx][vy]=1;
  • classe="food";
  • }else{
  • food[vx][vy]=0;
  • classe="case";
  • }
  • document.write('<td><input class="'+classe+'" id="case_x_'+vx+'_y_'+vy+'" type="text" size="1" onclick="afficher_case_details('+vx+','+vy+');" /></td>');
  • }
  • document.write('</tr>');
  • }
  • document.write('</table>');
  • /*
  • on affiche chaque cellule
  • */
  • for (i=0;i<nbr_cellules;i++){
  • tab[0][i]=1; //dans tab, on dit si la case est OQP
  • cellules[i]=new Cellule(0,i, rnd(10)+10, rnd(10)+10, rnd(10)+10, rnd(10)+10, rnd(10));
  • cellules[i].afficher();
  • }
  • //commence les déplacements
  • startmove();
  • </script>
  • </body>
  • </html>
<html>
<head>
<title>vie artificielle</title>
<style>

P{
	font-size:10pt;
	color:#000000;
}

P:first-letter {
	font-size:20pt;
	color:#7777FF;
}

.board{
	position: absolute;
	margin-left: 600px;
	margin-top: 5px;
	border-color:#0077FF;
	color:#000000;
}

.food{
	background-color: rgb(200, 250, 100);
}

.case{
	background-color: rgb(100, 150, 250);
}

.cellule{
	background-color: rgb(200, 0, 0);
}

.cellule_dead{
	background-color: rgb(0, 0, 0);
}
</style>
</head>
<body>
<div id="log" cols="50" rows="7" style="position:absolute;margin-top:5px;margin-left:5px;">
</div>
<input type="button" id="acte" value="stop" onclick="controle();"  style="position:absolute;margin-top:105px;margin-left:105px;"/>
<p style="position:absolute;margin-top:205px;margin-left:5px;width:550px;">Ceci est un jeu de la vie ! Le tableau est constitué de cases, ses dimentions sont de 15*15 cases, (ceci est définit en constantes, mais on peut le changer en modifiant les sources, seul deux lignes sont à changer...), chaque case peut contenir une cellule vivante ou morte, de la nouriture ou rien du tout... Les cellules se déplacent, elles ne peuvent pas marcher sur de la nouriture, ni sur une cellule morte, encore moins sur une autre cellule... Lorsqu'elles trouvent de la nouriture, elles commencent à manger, jusqu'a épuisement des stocks. Lorsqu'elles mangent, elles retrouvent de l'énergie, quand elles se déplacent, elles perdent beaucoups d'énergie, quand elles ne font rien, elles en perdent un peu. Lorsqu'elles n'ont plus d'énergie, elles meurent, lorsqu'elles en ont plus de 100, elles se divisent.</p>
<script type="text/javascript">

const taille_x=15;
const taille_y=15;
var nbr_cellules=5;
var tour=0, started=1;

cellules=new Array(nbr_cellules);			//le tableau qui contient les cellules
tab=new Array(taille_x);				// le tableau qui contient les obstacles
food=new Array(taille_x);				//le tableau qui contient l'emplacement de la nouriture

for (i=0;i<taille_x;i++){
	food[i]=new Array(taille_y);
	tab[i]=new Array(taille_y);
}
function afficher_case_details(vx,vy){
	var i;
	if (tab[vx][vy]){
		if (food[vx][vy]){
			alert("food : "+food[vx][vy]);
		}else{
			for (i=0;i<nbr_cellules;i++){
				if (cellules[i].pos_x==vx && cellules[i].pos_y==vy){
					alert(cellules[i].details());
				}
			}
		}
	}
}
function controle(){
	/*
	fonction qui permet de faire une pause
	*/
	if (started==1){
		document.getElementById('acte').value="continue";
		started=0;
	}else{
		document.getElementById('acte').value="stop";
		started=1;
		startmove();
	}
}

function Adn(a,b,c,d,e){
	/*
	La class ADN
	*/
	this.turn=new Array(4);
	this.want_to_turn=e;
	this.give_turn=Adn_turn;
	this.mute=Adn_muter;
	this.details=Adn_details;
	this.turn[0]=a;
	this.turn[1]=b;
	this.turn[2]=c;
	this.turn[3]=d;
	return(this);
}

function Adn_details(){
	str="";
	str+="0=>"+this.turn[0]+"\n";
	str+="1=>"+this.turn[1]+"\n";
	str+="2=>"+this.turn[2]+"\n";
	str+="3=>"+this.turn[3]+"\n";
	return str;
}

function Adn_muter(){
	/*
	Fonction qui fait muter l'ADN
	*/
	var e=rnd(5);
	var f=rnd(2)-1;
	if (e<4)
		this.turn[e]+=f;
	else
		this.want_to_turn+=f;
}

function Adn_turn(a,b,c,d, direction){
	/*
	les déplacements de la cellules sont stoqués dans l'adn
	*/
	var tabl=new Array(4);
	tabl[0]=a;
	tabl[1]=b;
	tabl[2]=c;
	tabl[3]=d;
	//alert(" a="+a+" b="+b+" c="+c+" d="+d);
	var chose=-1, e;
	if (a+b+c+d==1){
			if (a==1) chose=0;
			if (b==1) chose=1;
			if (c==1) chose=2;
			if (d==1) chose=3;
	}else if (a==1 || b==1 || c==1 || d==1){
		if (rnd(this.want_to_turn)!=1 && tabl[direction]==1){
			chose=direction;
		}else{
			while (1)
			{
				e=rnd(4);
				if ( tabl[e]==1 && rnd(this.turn[e])==1){ chose=e; break;}
			}
		}
	}
	return chose;
}

function Cellule(pos_x,pos_y, a, b, c, d){
	/*
	La class cellule
	*/
	this.adn=new Adn(a, b, c, d);
	this.etat=1;
	this.food=50;
	this.pos_x=pos_x;
	this.pos_y=pos_y;
	this.direction=0;
	this.afficher=Cellule_afficher;
	this.bouger=Cellule_bouger;
	this.camoufler=Cellule_camoufler;
	this.details=Cellule_details;
	return(this);
}

function Cellule_details(){
	var str="";
	str=(this.etat==1)?"Cellule vivante\n":"Cellule morte\n";
	str+="food : "+this.food+"\n";
	str+=this.adn.details();
	return str;
}

function Cellule_afficher(){
	/*
	la fonction qui permet d'afficher une cellule
	*/
	if (this.etat==1)
		document.getElementById('case_x_'+this.pos_x+'_y_'+this.pos_y).setAttribute("class","cellule");
	else
		document.getElementById('case_x_'+this.pos_x+'_y_'+this.pos_y).setAttribute("class","cellule_dead");
	tab[this.pos_x][this.pos_y]=1;
}

function Cellule_camoufler(){
	/*
	la fonction qui efface la cellule
	*/
	document.getElementById('case_x_'+this.pos_x+'_y_'+this.pos_y).setAttribute("class","case");
	tab[this.pos_x][this.pos_y]=0;
}

function Cellule_bouger(){
	/*
	la fonction qui fait se déplacer la cellule
	*/
	var retour=0;
	if (this.etat==1){
		var peut_bouger=new Array(4), i, have_move=1, manger=-1;
		if (this.pos_y!=0)
			if (food[this.pos_x][this.pos_y - 1]!=0)			manger=0;
		if (this.pos_x!=taille_x-1)
			if (food[this.pos_x + 1][this.pos_y]!=0)			manger=1;
		if (this.pos_y!=taille_y-1)
			if (food[this.pos_x][this.pos_y + 1]!=0)			manger=2;
		if (this.pos_x!=0)
			if (food[this.pos_x - 1][this.pos_y]!=0)			manger=3;
		
		if (manger==-1){
			peut_bouger[0]=0;
			peut_bouger[1]=0;
			peut_bouger[2]=0;
			peut_bouger[3]=0;
			if (this.pos_y!=0)
				if (tab[this.pos_x][this.pos_y - 1]==0)			peut_bouger[0]=1;
			if (this.pos_x!=taille_x-1)
				if (tab[this.pos_x + 1][this.pos_y]==0)		peut_bouger[1]=1;
			if (this.pos_y!=taille_y-1)
				if (tab[this.pos_x][this.pos_y + 1]==0)		peut_bouger[2]=1;
			if (this.pos_x!=0)
				if (tab[this.pos_x - 1][this.pos_y]==0)			peut_bouger[3]=1;

			i=this.adn.give_turn(peut_bouger[0],peut_bouger[1],peut_bouger[2],peut_bouger[3], this.direction);

			switch (i){
				case 0 :
					this.pos_y--;
					break;
				case 1 :
					this.pos_x++;
					break;
				case 2 :
					this.pos_y++;
					break;
				case 3 :
					this.pos_x--;
					break;
				default :
					have_move=0;
					break;
			}
			if (i!=-1) this.direction=i;
			
			this.food-=have_move*2+1;

		}else{
			this.food+=20;
			switch (manger){
				case 0 :
					food[this.pos_x][this.pos_y - 1]--;
					if (food[this.pos_x][this.pos_y - 1]==0){
						document.getElementById('case_x_'+this.pos_x+'_y_'+(this.pos_y-1)).setAttribute("class","case");
						tab[this.pos_x][this.pos_y - 1]=0;
					}
					break;
				case 1 :
					food[this.pos_x+1][this.pos_y]--;
					if (food[this.pos_x+1][this.pos_y]==0){
						document.getElementById('case_x_'+(this.pos_x+1)+'_y_'+this.pos_y).setAttribute("class","case");
						tab[this.pos_x+1][this.pos_y]=0;
					}
					break;
				case 2 :
					food[this.pos_x][this.pos_y+1]--;
					if (food[this.pos_x][this.pos_y + 1]==0){
						document.getElementById('case_x_'+this.pos_x+'_y_'+(this.pos_y+1)).setAttribute("class","case");
						tab[this.pos_x][this.pos_y + 1]=0;
					}
					break;
				case 3 :
					food[this.pos_x-1][this.pos_y]--;
					if (food[this.pos_x-1][this.pos_y]==0){
						document.getElementById('case_x_'+(this.pos_x-1)+'_y_'+this.pos_y).setAttribute("class","case");
						tab[this.pos_x-1][this.pos_y]=0;
					}
					break;
			}
		}
		if (this.food<=0)		//si la cellule doit mourrir...
			this.etat=0;
		if (100<this.food){		//si la cellule doit se diviser
			this.food-=50;
			retour =1;
		}
	}
	return retour;
}

function startmove(){
	/*
	la fonction "main"
	*/
	if (started==1){
		tour++;
		var a=0; log_="Il y a "+nbr_cellules+" cellules !<br />", en_vie=nbr_cellules, mortes=0;
		for (i=0;i<nbr_cellules;i++){
			cellules[i].camoufler();
			a=cellules[i].bouger();
			cellules[i].afficher();
			if (cellules[i].etat==0){
				en_vie--;
				mortes++;
			}
			if (a==1){		//fait se diviser la cellule
				cellules[nbr_cellules]=new Cellule(cellules[i].pos_x,cellules[i].pos_y, cellules[i].adn.turn[0], cellules[i].adn.turn[1], cellules[i].adn.turn[2], cellules[i].adn.turn[3], cellules[i].adn.want_to_turn);
				cellules[nbr_cellules].adn.mute();
				nbr_cellules++;
				log_+="La cellule "+i+"se divise !<br />";
			}
		}
		//affiche le log
		log_+="Nous sommes au tour "+tour+".<br />Il y a "+en_vie+"cellules en vie et "+mortes+" cellules mortes...";
		document.getElementById("log").innerHTML=log_;
		setTimeout('startmove();',1000);		//se rapelle
	}
}

function rnd(n){
/*
un nombre au hasard
*/
	return Math.floor(Math.random()* n);
}

/*
On affiche le plateau
*/
document.write('<table class="board">');
for (vy=0;vy<taille_y;vy++){
	document.write('<tr>');
	for (vx=0;vx<taille_x;vx++){
		tab[vx][vy]=0;
		if (rnd(10)==1){
			food[vx][vy]=10;
			tab[vx][vy]=1;
			classe="food";
		}else{
			 food[vx][vy]=0;
			 classe="case";
		}
		document.write('<td><input class="'+classe+'" id="case_x_'+vx+'_y_'+vy+'" type="text" size="1" onclick="afficher_case_details('+vx+','+vy+');" /></td>');
	}
	document.write('</tr>');
}
document.write('</table>');
/*
on affiche chaque cellule
*/
for (i=0;i<nbr_cellules;i++){
	tab[0][i]=1;					//dans tab, on dit si la case est OQP
	cellules[i]=new Cellule(0,i, rnd(10)+10, rnd(10)+10, rnd(10)+10, rnd(10)+10, rnd(10));
	cellules[i].afficher();
}

//commence les déplacements
startmove();

</script>
</body>
</html>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

14 mai 2005 12:43:27 :
On peut désormais avoir les détails d'une case en cliquant dessus (on a soit la quantitée de nouriture restante, soit l'énergie qu'il reste dans la cellule et son code génétique)
30 novembre 2005 13:44:05 :
ajouts de mots clefs

 Sources du même auteur

NOTATION CLASSIQUE VERS NOTATION NPI
LIST.ML D'OCAML EN JAVASCRIPT
Source avec Zip Source avec une capture UN CHRONOMETRE EN SVG+JAVASCRIPT
Source avec Zip Source avec une capture WYSIWYG TOTALEMENT OO
Source avec Zip Source avec une capture DU DOM EN SVG : UNE HORLOGE ANALOGIQUE

 Sources de la même categorie

Source avec Zip IMAGES DÉFILANT SUR UN CYLINDRE (SCROLLING IMAGES) par william voirol
Source avec Zip IMAGES DÉFILANT VERTICALEMENT (SCROLLING IMAGES) par william voirol
Source avec Zip IMAGES DANSANTES 4: MOUVEMENT DE LA TORTUE par william voirol
Source avec Zip IMAGES DANSANTES 3: MOUVEMENT ALÉATOIRE ORIENTÉ par william voirol
Source avec Zip IMAGES DANSANTES 2: MOUVEMENT ALÉATOIRE SANS SUPERPOSITIONS par william voirol

 Sources en rapport avec celle ci

Source avec Zip MACHINE À SOUS par loicseg
Source avec Zip JEU DE TAQUIN par yann078
Source avec Zip LE CÉLÈBRE JEU SNACK par lesnouesremy
Source avec Zip Source avec une capture BILLARD EN JAVASCRIPT C'EST POSSIBLE ! par amrounix
Source avec Zip CRÉATION DE SUDOKU EN JAVASCRIPT par pabbati

Commentaires et avis

Commentaire de Romain128 le 28/03/2005 12:42:34

Marche parfaitement sous Firefox 1.0 (et donc sous Mozilla)
Par contre, notre cheêer navigateur IE n'affiche pas le tableau de droite...

Commentaire de coucou747 le 28/03/2005 13:37:11 administrateur CS

eh oui... triste réalitée, la pauvre bouze de IE se voit une fois de plus incapable d'afficher un code corect...

Commentaire de Arto_8000 le 29/03/2005 00:33:27

J'ai trouvé le problème avec IE. Le problème se trouve à la ligne 48 et 49. Le terme "const" cause l'erreur dans le script. Bref il suffi de l'enlever et cela ne changera rien puisque les variables taille_x et taille_y déclarer hors d'un fonction sont nécessairement des variables constantes.

Commentaire de coucou747 le 29/03/2005 18:14:34 administrateur CS

des variables constantes....

une constante ne peut pas changer de valeur... elle est plus rapide a l'exécution...

Commentaire de kriss627 le 31/03/2005 10:23:24

Je ne voie pas les cellules !?!
Juste la nourriture (en vert).

Commentaire de PhiL666 le 02/04/2005 18:21:39

Selon moi, la bouze s'est plus le programmeur qui se fou de 98% des internautes... ;-)

quand même très bon script !

Commentaire de coucou747 le 02/04/2005 18:28:15 administrateur CS

t'es un peu en contradiction avec toi même en disant que la bouze que je suis à posté un script qui est selon toi très bon...

tu es aussi en contradiction avec le règlement qui dit que l'on poste une source pour le navigateur que l'on veut du moment que l'on rèspècte le langage...

ainsi, ma source est aux normes html et javascript, et je ne me moque pas des internautes car je ne mets pas cette source sur une page, de toute façon, un jeu de la vie n'est interessante que pour le programmeur...

pour qu'elle soit compatible, il faut mettre les fonctions objet dans head...

Cette source n'a pas de faute, et pourtant, elle ne passe pas sous IE, je n'ose rien conclure à voie haute, car tu risquerais d'entendre et de reposter ce message sur toute mes sources en enlevant la dèrnière ligne...

Commentaire de PhiL666 le 02/04/2005 18:38:58

>
> pour qu'elle soit compatible, il faut mettre les fonctions objet dans head...
>

merci pour la précision , c'est cool



(je savais bien que le script était seulement un exercice)

Commentaire de malalam le 08/04/2005 12:45:41 administrateur CS

Hello,

joli script coucou :-)

Ceci dit, si j'interviens, c'est pour noter d'une part (vu qu'il n'y a pas de note, c'est dommage), et pour emettre une reserve quant a ce que tu dis sur IE, Firefox etc...
Ok, tu as raison sur quelques points : IE ne respecte pas ce qu'il devrait respecter (pas toujours disons). Et ok, tu as le droit de programmer pour n'importe quel navigateur.
Mais tu es le 1er a souligner avec vehemence le fait qu'un script ne fonctionne pas sous Konqueror ou sous Firefox...
Je pense que Phil a raison dans ce qu'il dit (bouse en moins, mais apres tout c'est toi qui a utilise ce mot lol) : nous sommes plus ou moins des developpeurs web, nous developpons pour les autres en general (meme la, sinon tu ne mettrais pas ce script ici : il peut-etre un exercice interessant pour d'autres), alors un vrai bon script est un script qui fonctionne au mieux sur toutes les plateformes. Javascript est ujn language web, et on se sert de differents navigateurs pour acceder au web. Il faut que le createur d'un script en tienne compte au maximum.
Et je sais, ce n'est pas souvent tres drole, ni toujours tres simple.  Mais c'est tout simplement mieux.

Voila, du coup, 8 sur 10, juste pour sanctionner un peu le fait qu'il y a un probleme avec IE ;-)

Commentaire de coucou747 le 08/04/2005 22:29:06 administrateur CS

t'as raison...
tu dis que je sanctionne les scripts qui ne sont pas compatibles gecko... C'est vrai, mais c'est du fait qu'ils sont mals programmés.... Un javascript qui n'est pas compatible IE peut être parfaitement bien programmé, alors qu'un javascript qui n'est pas compatible Mozilla est toujours mal programmé.... (utilisation de fonctions qui n'existent pas...)

Commentaire de PhiL666 le 09/04/2005 02:46:27

Réponse à coucou:
conclusion un peu vite ... tous les navigateurs ont leurs propres fonctions, options ou terme unique qui ne corresponde pas aux normes. Il est très facile de blâmer un navigateur en utilisant des éléments non-conventionnel. Là tu mets les fonction dans le BODY juste pour pas que ça marche avec IE.

C'est drôle parce que tu es toujours le premier à dire que tel script ne fonctionne pas sur Banana 1995 (genre de navigateur dont personne connaît le nom) ou la première version de Mozilla

Aussi, tu fais un script en étant fier qu'il ne marche pas pour IE. Ton site a menu qui produit des résultats affreux sur IE.
IE étant un navigateur dont 80% et plus des internautes utilise !!

Comment peux-tu demander aux autres de rester compatible à tous? Bref, ton discours n'a rien de convainquant.

Pour ma part, je suis entièrement en accord à faire des scripts compatibles à tous navigateurs ayant au moins 1% des parts du Net.

Commentaire de coucou747 le 09/04/2005 09:50:41 administrateur CS

lol

quand je cite un navigateur, je cite un navigateur qui a un moteur gecko (Mozilla, galeon, epiphany, firefox ...) ou khtml (konqueror)

je ne cite aucun autre navigateur... et j'utilises toujours les dèrnières versions...

Pour une incompatibilitée IE quand on est compatible Mozilla, soit un fait du XUL, soit on fait du html + js... Mais dans les deux cas, c'est corect... ) part le XUL, gecko n'a rien ajouté par rapport à la norme (part quelques fonctions que IE permet) et si le XUL n'est pas encore une norme du web, c'est parce-que microsoft refuses de faire passer cette norme...

utiliser ms, c'est donc refuser l'évolution...

pour mes problèmes de menus, j'ai jamais réussi à le faire à 100/100 compatible IE, alors comme ça, il me plait pas trop, mais il marche et c'est l'essentiel... Je suis sur le dévelopement d'une autre version totalement diférente, mais c'est pas pour demain...

Et cherche de bonnes stats, et constate que IE n'est pas aussi utilisé que tu ne le penses...

Commentaire de Arto_8000 le 09/04/2005 16:52:20

coucou747 quand tu dis que IE n'est pas si utiliser , tu ferais bien de vérifier tes sources ,car se que j'ai vu c'est que IE est le plus utiliser.

Commentaire de coucou747 le 09/04/2005 20:43:01 administrateur CS

j'aprouve, mais gecko fait plus de 1/100, il ferait plutot 30/100

Commentaire de Romain128 le 09/04/2005 23:40:59

Le moteur Gecko a pour objectif d'etre multi-plateformes...
Ansi, un script fonctionnant sous Firefox fonctionnera sous Mozilla...
En attendant que Gecko soit majoritairement utlisé, il faut s'adapter au fait qu'IE ait rajouté des fonctions bien à lui!
En encouragant, mais pas en forcant l'utilisation de Gecko, on favorise le travail des programmeurs...

Commentaire de mohman le 13/04/2005 12:38:45

Désolé i je suis lammer, mais il sert a quoi ce script?? je n'ais pas compris le but du jeu!


Sinon c'est assez bien fait!

Commentaire de mohman le 13/04/2005 12:38:47

Désolé i je suis lammer, mais il sert a quoi ce script?? je n'ais pas compris le but du jeu!


Sinon c'est assez bien fait!

Commentaire de malalam le 13/04/2005 13:09:27 administrateur CS

Mohman => http://www.limsi.fr/Individu/jps/enseignement/examsma/2003/MAMLOUK_BENOUIRANE/jeu.htm

Commentaire de coucou747 le 13/04/2005 17:00:08 administrateur CS

j'ai détaillé ce concept de jeu de la vie dans le zip...

Commentaire de mohman le 13/04/2005 17:24:28

Ah merci :) mais comment opn y jou?? moi les carrés vert et bleus ne bougent pas.... (je suis vraiment un lammer!!)

Commentaire de coucou747 le 13/04/2005 17:51:42 administrateur CS

on ne joue pas vraiment, on regarde...
les carés bleus représentent le milieu, les carés verts, la nouriture, les carés rouges les cellules... donc, c'est normal que les carrés bleus et verts ne bougent pas...

Commentaire de mohman le 14/04/2005 07:52:13

Alors où sont les cellules???

Commentaire de coucou747 le 16/04/2005 10:03:10 administrateur CS

en rouge...

Commentaire de mohman le 16/04/2005 11:12:30

Ah je ne les vois pas!

Commentaire de coucou747 le 14/05/2005 02:00:02 administrateur CS

change de nav...
Je vais déveloper une nouvelle version ou on verrait l'adn d'une cellule quand on clique dessus... ça permetrais de comparer l'adn des cellules de départ et celle des celules de fin...

Commentaire de mohman le 14/05/2005 12:13:21

Ce la ne doit pas être facile... Je ne suis pas très doué en programmation (je ne sais que le html) et je me demande comment tu sais tout ça!

Commentaire de coucou747 le 14/05/2005 12:39:18 administrateur CS

Le html n'est pas de la programmation mais de la mise en page...

j'ai fait tout ça avec un éditeur de texte et un navigateur, lance toi, c'est pas si compliqué que ça...

je ferais la mise à jour dans quelques minutes

Commentaire de popeye peyo le 25/07/2005 13:55:36

pb: je suis sur IE
j'ai un anti-virus qui bloque casiment tout et il ne veut pas faire marcher l'appication "vie artificielle" :il ecrit dans la barre d'etat "erreur sur la page"
Donc si quelqu'un ayant le même matériel rencontre et resout le problème , je vous demande de répondre

matériel

explorateur: IE
anti-virus:  trend micro pc-cillin internet security 12

Commentaire de coucou747 le 25/07/2005 16:56:19 administrateur CS

quel est le message d'erreur ?

Commentaire de Marmotte86 le 28/07/2005 09:46:37

salut

vraiment bien ce script... mais il y a un probleme, meme sous FireFox :p
quand plusieurs cellules se divisent en meme temps, le texte qui s'affiche passe en dessous du bouton stop... il faudrait peut etre decaler le bouton un peu a droite :) et quand toutes les cellules sont mortes, ca ne s'arrete pas.

dommage pour la compatibilité IE !

Commentaire de Marmotte86 le 28/07/2005 09:54:34

Une remarque quand meme... pourquoi utilises tu setTimeout ?
tu aurais pu mettre <body onload='Play=setInterval(startmove,1000)'> pour eviter la fonction récurente. cette fonction sert justement à eviter les setTimeout récurents (cad qui s'appellent tous seuls) et n'est presque jamais utilisée, alors que ce type de code est typiquement le cas ou elle est utile.

Après, tu peux mettre un clearInterval(Play) quand il reste 0 cellules vivantes.

Commentaire de stfou le 01/04/2007 16:22:38

Bonjour, tu devrais faire un jeu un minimum interactif, par exemple fait un machin ou il vivent dans l'eau, et il faut pas leur donner trop de nourriture sinon ils meurent, faut oxygéner l'eau régulièrement sinon ils crèvent etc...

Sinon bonne source, 8/10

Commentaire de coucou747 le 01/04/2007 16:25:01 administrateur CS

... cette source a deux ans :) crois bien que si je faisais un jeu de la vie maintenant, je le ferais en java, pas en javascript...

Commentaire de stfou le 01/04/2007 17:19:35

C'est sur qu'il y a plus de possibilités en java, quoi que ce serait possible aussi en DHTML.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

jeu de nim [ par matcheu ] salu est ce que quelqun sait programmé le jeu de nim en perl Boutons radios? [ par dufour137 ] bonjour tout le monde, j'aimerais svoir comment faire pour tester une valeure dans une page htm sur un bouton radio pour ouvrir une page internet selo PRoblème en javascript, jeu de pendu [ par Chihiro ] Voilà, j'ai un gros problème dans mon script qui ne marche pas, parce que je suis vraiment nulle en programmation... Est ce que quelqu'un pourrait y j Tester Labyrinthus v2.8 améliorer mon jeu [ par yanndroniou ] Yann Droniou<img src=/imgs2/smile_approve.gif border=0 align="absmiddle" Stratégie de jeu [ par ralota ] Je souhaite créer un jeu en ligne utilisant javascript et php comme langages. Ce jeu consiste à déplacer des poins tout comme l'échec mais il s'agit d Calcul automatique dans un formulaire [ par Looping2605 ] Bonjour @ tous,j'ai un petit problème pour mon formulaire. Je souhaiterais afficher dans un textarea un tarif qui fluctue selon les choix de l'utilisa Instit en détresse besoin d'aide - javascript [ par jojosse25 ] AideJ'essaie de fabriquer un jeu pour des enfants de l'école.Deux frames : à gauche la page jeu ( image mappée )à droite la réponse avec commentaire ( Cookie me sauverait la vie... [ par biboobeno ] Salut, Sur mon site je propose des téléchargements. Et j'aimerais limiter le nombre de téléchargements par jour et par user.Est-ce qu'il est possible jeu de memoire [ par gladysxxl ] bonjour,petit souci avec le jeu de memoire ( http://www.javascriptfr.com/code.aspx?ID=22785 ) qui fonctionne tres bien en local mais lorsque je me le Enregistrer un formulaire sur le hd [ par Ouk18 ] J'ai fait ce formulaire&lt;htm&gt;&lt;head&gt; &lt;title&gt;Questionaire&lt;/title&gt;&lt;/head&gt; &lt;Body&gt; &lt;center&gt;&lt;u&gt;Lancer le jeu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales