DESCRIPCIÓN
El juego de la vida es el mejor ejemplo de un autómata celular, diseñado por el matemático británico John Horton Conway en 1970.
El juego de la vida es en realidad un juego de cero jugadores, lo que quiere decir que su evolución está determinada por el estado inicial y no necesita ninguna entrada de datos posterior. El "tablero de juego" es una malla formada por cuadrados ("células") que se extiende por el infinito en todas las direcciones. Cada célula tiene 8 células vecinas, que son las que están próximas a ella, incluso en las diagonales. Las células tienen dos estados: están "vivas" o "muertas" (o "encendidas" y "apagadas"). El estado de la malla evoluciona a lo largo de unidades de tiempo discretas (se podría decir que por turnos). El estado de todas las células se tiene en cuenta para calcular el estado de las mismas al turno siguiente. Todas las células se actualizan simultáneamente
REGLAS
VÍDEO DE COMO SE JUEGA
Las transiciones dependen del número de células vecinas vivas:
Una célula muerta con exactamente 3 células vecinas vivas "nace" (al turno siguiente estará viva).
Una célula viva con 2 ó 3 células vecinas vivas sigue viva, en otro caso muere o permanece muerta (por "soledad" o "superpoblación").
PATRONES
VÍDEO DE COMO SE JUEGA
CÓDIGO
public static void main(String[] args) {
System.out.println("inserte los datos");
int matriz[][] = new int[3][3];
llenar(matriz);
mostrar(matriz);
//metods
contar_vecinos(matriz);
reglas(matriz);
imprimir2(matriz);
}
//EL METODO EN JAVA PARA LLENAR
private static void llenar(int[][] mat) {
for ( i = 0; i < mat.length; i++) {
for ( j = 0; j < mat.length; j++) {
mat[i][j] = teclado.nextInt();
}
}
}
//EL METODO EN JAVA PARA MOSTRAR
private static void mostrar(int[][] mat) {
for ( i = 0; i < mat.length; i++) {
for ( j = 0; j < mat.length; j++) {
System.out.print(mat[i][j] + " ");
}
System.out.println();
}
}
if (mat[i][j-1]==1)
{
vecino=vecino+1;
}
if (mat[i][j+1]==1)//vecino derecha
{
vecino=vecino+1;
}
if (mat[i-1][j]==1)//vecino arriba
{
vecino=vecino+1;
}
if (mat[i+1][j]==1)//vecino abajo
{
vecino=vecino+1;
}
if (mat[i-1][j-1]==1)//vecino arriba izquierda
{
vecino=vecino+1;
}
if (mat[i-1][j+1]==1)//vecino arriba derecha
{
vecino=vecino+1;
}
if (mat[i+1][j-1]==1)//vecino arriba izquierda
{
vecino=vecino+1;
}
if (mat[i+1][j+1]==1)//vecino abajo derecha
{
vecino=vecino+1;
}
}
}
private static void reglas (int [][] mat){
if (mat[i][j]==1)
{
if (vecino<=1)
{
mat[i][j]=0;
}
if (vecino>=2 && vecino<=3)
{
mat[i][j]=1;
}
if (vecino>=4)
{
mat[i][j]=0;
}
}
if (mat[i][j]==0)
{
if (vecino==3)
{
mat[i][j]=1;
}
else
{
mat[i][j]=0;
}
}
}
private static void imprimir2 (int [][] mat){
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
if (mat[i][j]==0)
System.out.println ("0");
}
else
{
System.out.println("1");
}
}
}
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
mat[i][j]=mat[i][j];
}
}
Creo que, para que corra bien, hay que cambiar el if(mat[i][j]==0) por else if(mat[i][j]==0).
ResponderBorrar