Juego de la vida1

Anuncio
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
Descargar