INTRODUCCION Las reglas del juego de la vida Este juego se desarrolla en un universo de celdas poblado de células que nacen se reproducen o mueren, según determinadas reglas. La vida de cada célula está determinada por la presencia de otras tres células en los 8 cuadritos que la rodean. 1 8 7 2 3 6 4 5 Regola 1: Continuar viviendo Una célula viva continua viviendo también en la generación procedente si entorno a ella hay 2 o 3 células vivas Ejemplo: la célula central continúa viviendo Regla 2: nacer Se 3 células son adyacentes a un cuadrito vacio entonces en la próxima generación en ese cuadro nacerá una nueva célula. Ejemplo: en la celda central nacera una nueva celula Regla 3: morir (de inanición o sobrepoblación) Si una célula tiene menos de 2 células vivas, o más de 3, esa morirá por inanición o sobrepoblación. La cellula centrale morirà d'inedia La cellula centrale morirà per sovrapopolazione CODIGO en C #include <stdio.h> struct celula { int estado; } tab[10][10]; //prototipos de funcion void inicializa(); void juego(); void impresion_final(); //no hay necesidad de pasarlo al puntero int main() ///programa principal { inicializa(); //llama a la función juego(); return 0; } void inicializa() //coloca la celula donde deseas { int i,j; //INICIALIza EN CERO for(i=0;i<10;i++) for(j=0;j<10;j++) tab[i][j].estado = 0; int opcion; do //escoges cual estará viva { printf("Inserta las coordenadas donde se ubicara la celula:\n x --> "); scanf("%d",&i); printf("y --> "); scanf("%d",&j); tab[i][j].estado = 1; printf("\n Deseas agregar otra celular? 1(si) 2(no)\n"); scanf("%d",&opcion); } while(opcion == 1); //imprime impresion_final() ; //llama a la función imprime } void juego() //aquí sigue los pasos del resgistro { int apoyo[10][10],flag,z,i,j; //matriz de 10x10 for(i=0;i<10;i++) //inicia apoyo { for(j=0;j<10;j++) { apoyo[i][j] = 0; } } for(z=0;z<10;z++) //te lo repite 10 veces" { for(i=0;i<10;i++) { for(j=0;j<10;j++) { flag=0; if(i==0 && j==0 && flag== 0) //Casilla[0][0] superior izquierda if ( (tab[i+1][j].estado==1) || (tab[i][j+1].estado==1) ) { printf("1"); apoyo[i][j]=1; flag= 1; } if(i==0 && j ==9 && flag== 0)//Casilla [0][44] superior derecha if((tab[i+1][j].estado==1) || (tab[i][j-1].estado==1) ) { printf("2");apoyo[i][j]=1; flag= 1; } if(i==44 && j ==9 && flag== 0)//Casilla[44][44]inferior derecha if((tab[i-1][j].estado==1) || (tab[i][j+1].estado==1)) { printf("3");apoyo[i][j]=1; flag= 1; } if(i==44 && j ==0 && flag== 0) //Casilla [44][0]inferior izquierda if((tab[i-1][j].estado==1) || (tab[i][j+1].estado==1)) { printf("4");apoyo[i][j]=1; flag= 1; } //Bordes if(i==0 && flag== 0 && j!=0 && j!=9) if((tab[i+1][j].estado==1)||(tab[i][j+1].estado==1)||(tab[i][j-1].estado==1)) { printf("5");apoyo[i][j]=1; flag= 1; } if(i==44 && flag== 0 && j!=0 && j!=9) if((tab[j][i-1].estado==1)||(tab[j+1][i].estado==1)||(tab[j-1][i].estado==1)) { printf("6");apoyo[i][j]=1; flag= 1; } if(j==0 && flag== 0 && i!=0 && i!=9) if((tab[i-1][j].estado==1)||(tab[i+1][j].estado==1)||(tab[i][j+1].estado==1)) { printf("7");apoyo[i][j]=1; flag= 1; } if(j==44 && flag== 0 && i!=0 && i!=9) if((tab[i][j-1].estado==1)||(tab[i-1][j].estado==1)||(tab[i+1][j].estado==1)) { printf("8");apoyo[i][j]=1; flag= 1; } // Casilla general if(flag==0 && i!=0 && i!=9 && j!=0 && j!=9) if((tab[i-1][j].estado==1) || (tab[i][j+1].estado==1) || (tab[i+1][j].estado==1) || (tab[i][j1].estado==1)) { apoyo[i][j]=1; flag=1; } } } for(i=0;i<10;i++) { for(j=0;j<10;j++) { tab[i][j].estado=apoyo[i][j]; } } impresion_final(); system("pause"); } } void impresion_final() { int i,j; printf("\n\n\t\t ***nueva posición celular...*** \n\n\n"); for(i=0;i<10;i++) { for(j=0;j<10;j++) { if(tab[i][j].estado == 1) printf("*"); else printf("°"); } printf("\n"); } Capturas de Pantalla