Last active
December 19, 2017 16:54
-
-
Save anaelChardan/9ab0518e54a8bcffa74d0696c445c7ab to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Your code here | |
// Your code here | |
function recupererNombreDeVoisins(generation, ligne, colonne) { | |
var nombreDeVoisinsPleins = 0; | |
var jeNeSuisPasLaPremiereLigne = ligne > 0; | |
var jeNeSuisPasLaPremiereColonne = colonne > 0; | |
var jeNeSuisPasLaDerniereLigne = generation.length - 1 > ligne; | |
var jeNeSuisPasLaDerniereColonne = generation[ligne].length - 1 > colonne; | |
if (jeNeSuisPasLaPremiereLigne && jeNeSuisPasLaPremiereColonne) { | |
//mon voisin en haut a gauche | |
if (generation[ligne - 1][colonne - 1] == 1) { | |
nombreDeVoisinsPleins++; | |
} | |
} | |
if (jeNeSuisPasLaPremiereLigne) { | |
//mon voisin en haut | |
if (generation[ligne - 1][colonne] == 1) { | |
nombreDeVoisinsPleins++; | |
} | |
} | |
if (jeNeSuisPasLaPremiereLigne && jeNeSuisPasLaDerniereColonne) { | |
// mon voisin en haut a droite | |
if (generation[ligne - 1][colonne + 1] == 1) { | |
nombreDeVoisinsPleins++; | |
} | |
} | |
if (jeNeSuisPasLaDerniereColonne) { | |
// mon voisin a droite | |
if (generation[ligne][colonne + 1] == 1) { | |
nombreDeVoisinsPleins++; | |
} | |
} | |
if (jeNeSuisPasLaDerniereColonne && jeNeSuisPasLaDerniereLigne) { | |
//mon voisin en bas a droite | |
if (generation[ligne + 1][colonne + 1] == 1) { | |
nombreDeVoisinsPleins++; | |
} | |
} | |
if (jeNeSuisPasLaDerniereLigne) { | |
//mon voisin en bas | |
if (generation[ligne + 1][colonne] == 1) { | |
nombreDeVoisinsPleins++; | |
} | |
} | |
if (jeNeSuisPasLaDerniereLigne && jeNeSuisPasLaPremiereColonne) { | |
//mon voisin en bas a gauche | |
if (generation[ligne + 1][colonne - 1] == 1) { | |
nombreDeVoisinsPleins++; | |
} | |
} | |
if (jeNeSuisPasLaPremiereColonne) { | |
//mon voisin a gauche | |
if (generation[ligne][colonne - 1] == 1) { | |
nombreDeVoisinsPleins++; | |
} | |
} | |
return nombreDeVoisinsPleins; | |
} | |
////////// | |
function AppliquerRegle(generation) { | |
var nouvellegeneration = []; | |
for (ligne = 0; ligne < generation.length; ligne++) { | |
nouvellegeneration[ligne] = []; | |
for (colonne = 0; colonne < generation[ligne].length; colonne++) { | |
var monnombredevoisinplein = recupererNombreDeVoisins(generation, ligne, colonne); | |
if (monnombredevoisinplein == 3) { | |
nouvellegeneration[ligne][colonne] = 1; | |
} else if (monnombredevoisinplein == 2) { | |
nouvellegeneration[ligne][colonne] = generation[ligne][colonne]; | |
} else if (monnombredevoisinplein < 2 || monnombredevoisinplein > 3) { | |
nouvellegeneration[ligne][colonne] = 0; | |
} | |
} | |
} | |
return nouvellegeneration; | |
} | |
////////// | |
function JolieAffichageLettres(generation) { | |
var resultat = ""; | |
for (ligne = 0; ligne < generation.length; ligne++) { | |
for (colonne = 0; colonne < generation[ligne].length; colonne++) { | |
if (generation[ligne][colonne] == 1) { | |
resultat += "X"; | |
} else { | |
resultat += " "; | |
} | |
} | |
// Le \n correspond a un retour a la ligne | |
resultat += "\n"; | |
} | |
return resultat; | |
} | |
function AffichageLettres(generation) { | |
// EffacerEcran(); | |
Ecrire(JolieAffichageLettres(generation)); | |
} | |
//////// | |
function AffichageGraphique(generation, initialisation) { | |
var hauteurCellule = 1; | |
var largeurCellule = 1; | |
if (initialisation == 0) { | |
Initialiser(); | |
Viewport(0, 0, generation.length * largeurCellule, generation[0].length * hauteurCellule, 1); | |
} else { | |
Effacer(); | |
Viewport(0, 0, generation.length * largeurCellule, generation[0].length * hauteurCellule, 1); | |
} | |
for (ligne = 0; ligne < generation.length; ligne++) { | |
for (colonne = 0; colonne < generation[ligne].length; colonne++) { | |
if (generation[ligne][colonne] == 1) { | |
RectanglePlein(colonne * largeurCellule, ligne * hauteurCellule, largeurCellule, hauteurCellule, 'red'); | |
} else { | |
RectanglePlein(colonne * largeurCellule, ligne * hauteurCellule, largeurCellule, hauteurCellule, 'blue'); | |
} | |
} | |
} | |
} | |
////// | |
function AfficherJeuDepart(generation) { | |
AffichageLettres(generation); | |
AffichageGraphique(generation, 0); | |
} | |
function AfficherJeu(generation) { | |
AffichageLettres(generation); | |
//AffichageGraphique(generation, 1); | |
} | |
//// | |
function creerGenerationAleatoire(longueurDeLaGeneration, nombreDeLignes, nombreDeColonnes) { | |
//On initialise une generation | |
var generationAConstruire = []; | |
for (var ligne = 0; ligne < nombreDeLignes; ligne++) { | |
generationAConstruire[ligne] = []; | |
for (var colonne = 0; colonne < nombreDeColonnes; colonne++) { | |
generationAConstruire[ligne][colonne] = 0; | |
} | |
} | |
var longueurGeneree = 0; | |
var ligneAuHasard = 0; | |
var colonneAuHasard = 0; | |
while (longueurGeneree < longueurDeLaGeneration) { | |
ligneAuHasard = Hasard(nombreDeLignes); | |
colonneAuHasard = Hasard(nombreDeColonnes); | |
//Si la celulle n'est pas deja vivante | |
if (generationAConstruire[ligneAuHasard][colonneAuHasard] != 1) { | |
generationAConstruire[ligneAuHasard][colonneAuHasard] = 1; | |
longueurGeneree++; | |
} | |
} | |
return generationAConstruire; | |
} | |
/////// | |
function DemarrerJeu(generationDeDepart, nombreDeGeneration) { | |
AfficherJeuDepart(generationDeDepart, 0); | |
generationCourante = generationDeDepart; | |
for (i = 0; i <= nombreDeGeneration; i++) { | |
generationCourante = AppliquerRegle(generationCourante); | |
Ecrire("--------------------------------------------"); | |
AfficherJeu(generationCourante); | |
//setTimeout(AfficherJeu(generationCourante), 3000); | |
//AfficherJeu(AppliquerRegle(generationDeDepart)); | |
} | |
} | |
var nombreDeLignes = SaisieEntier("Combien voulez-vous de lignes?"); | |
var nombreDeColonnes = SaisieEntier("Combien voulez-vous de colonnes?"); | |
var nombreDeCellulesDeDepart = SaisieEntier("Combien de cellule naissante voulez-vous sur une matrice de " + nombreDeLignes + "x" + nombreDeColonnes + "?"); | |
generation = creerGenerationAleatoire(nombreDeCellulesDeDepart, nombreDeLignes, nombreDeColonnes); | |
var nombreDeGeneration = SaisieEntier("Combien voulez-vous de génération?"); | |
DemarrerJeu(generation, nombreDeGeneration); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment