Skip to content

Instantly share code, notes, and snippets.

@anaelChardan
Last active December 19, 2017 16:54
Show Gist options
  • Save anaelChardan/9ab0518e54a8bcffa74d0696c445c7ab to your computer and use it in GitHub Desktop.
Save anaelChardan/9ab0518e54a8bcffa74d0696c445c7ab to your computer and use it in GitHub Desktop.
// 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