Le jeu de la vie

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

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)