#pragma once #include using namespace std; class CellAuto { protected: bool valide (char rule[28]){ for(int i=0; i<27; i++) if(rule[i]!='#') if(rule[i]!='O') if(rule[i]!='.') return false; return true; } short int val(char c){ switch(c){ case ('#'): return 0; case ('O'): return 1; case ('.'): return 2; default: throw "Pas suppose arriver"; } } public: void fillGrid (char** Grid, char rule[28], int numRangees){ int CtrChar = 0; while(Grid[0][CtrChar]) CtrChar++; CtrChar-=1; for(int i=1; i< numRangees; i++){ Grid[i][CtrChar+1]=(char)0; for(int j=0; Grid[i][j]; j++) Grid[i][j] = rule[ val(Grid[i-1][(j?j-1:CtrChar)]) * 9 + val(Grid[i-1][j]) * 3 + val(Grid[i-1][(j-CtrChar?j+1:0)]) ]; } }; char** createGrid(char* RangeInitiale, char rule[28], int numRangees){ if(!valide(rule)) throw "Regle Invalide"; char** Grid = new char*[numRangees]; int CtrChar=0; //La rangee se termine par le charactere 0 while(RangeInitiale[CtrChar]) CtrChar++; CtrChar+=1; for(int j=0; j