Le jeu de la vie

Soyez le premier à donner votre avis sur cette source.

Vue 9 437 fois - Téléchargée 593 fois

Description

le jeu de la vie est un automate cellulaire, il permet de développer des motifs complexes à partir de règles très simples.

en l'occurence une case ne peut "survivre" que si elle est entourée de 2 ou 3 autres cases.
une case est également créée dans le voisinage de 3 cases.

cette version en flash permet de modifier ces paramètres, afin d'essayer d'autres automates plus ou moins créatifs.

Source / Exemple :


onEnterFrame = function () {
	survie_Min = S_Min.text;
	survie_Max = S_Max.text;
	creation_Min = C_Min.text;
	creation_Max = C_Max.text;
	if (jeu) {
		// 2 boucles :
		// la première crée ou détruit des cases, selon leurs voisines en gérant leur transparence alpha.
		for (var j = 0; j<largeur*hauteur; j++) {
			voisins = compte(j);
			if (tout["case"+j].etat == "vie") {
				if (voisins>=survie_Min && voisins<=survie_Max) {
					tout["case"+j]._alpha = 100;
				} else {
					tout["case"+j]._alpha = 0;
				}
			} else {
				if (voisins>=creation_Min && voisins<=creation_Max) {
					tout["case"+j]._alpha = 100;
				} else {
					tout["case"+j]._alpha = 0;
				}
			}
		}
		// la deuxième ajuste la variable etat une fois toutes les cases modifiées.
		// cela permet d'avancer "tour par tour" : la case s'ajuste en fonction de l'ancien état de ses voisines
		// et non pas sur leur alpha donné par la première boucle.
		for (var j = 0; j<largeur*hauteur; j++) {
			if (tout["case"+j]._alpha == 100) {
				tout["case"+j].etat = "vie";
			}
			if (tout["case"+j]._alpha == 0) {
				tout["case"+j].etat = "mort";
			}
		}
	}
};
//cette fonction renvoie le nombre de voisins de la case désignée ["case"+j]
function compte(i) {
	nombre = 0;
	if (tout["case"+(i-largeur)].etat == "vie") {
		nombre += 1;
	}
	if (tout["case"+(i+largeur)].etat == "vie") {
		nombre += 1;
	}
	//vérifie que la case n'est pas sur la première colonne
	//afin que ["case"+(i-1)] ne soit pas considérée comme voisine
	if (i%largeur != 0) {
		if (tout["case"+(i-largeur-1)].etat == "vie") {
			nombre += 1;
		}
		if (tout["case"+(i-1)].etat == "vie") {
			nombre += 1;
		}
		if (tout["case"+(i+largeur-1)].etat == "vie") {
			nombre += 1;
		}
	}
	//vérifie que la case n'est pas sur la dernière colonne
	if (i%largeur != largeur-1) {
		if (tout["case"+(i-largeur+1)].etat == "vie") {
			nombre += 1;
		}
		if (tout["case"+(i+1)].etat == "vie") {
			nombre += 1;
		}
		if (tout["case"+(i+largeur+1)].etat == "vie") {
			nombre += 1;
		}
	}
	return nombre;
}
suite.onRelease = function() {
	jeu = false;
	gotoAndStop(1);
};

Conclusion :


déterminez les cases initiales à la souris, puis cliquez sur "Go !"

c'est assez joli non ? :)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_daddy11world
Messages postés
60
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
8 novembre 2009

10 oct. 2009 à 01:11
Marrant sinon ^^
sgainowai
Messages postés
10
Date d'inscription
vendredi 18 juillet 2008
Statut
Membre
Dernière intervention
27 août 2009

7 août 2009 à 00:59
meme question ?
mon avast ne détecte rien

en tout cas, je suis désolé !
pegase31
Messages postés
6138
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
11
7 août 2009 à 00:54
à quel niveau ?

Peg'
foxbowrnb
Messages postés
4
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
5 août 2009

5 août 2009 à 13:24
il y a un virus dans l'archive !!

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.

Du même auteur (sgainowai)