Hola:
Antes que nada me gustaria saber si cuento con el apoyo de los programadores de esta sección en encontrar un problemita de mi programa "El Juego de la Vida".
Como saben el juego de la Vida es un juego de "0 jugadores" que simula el comportamiento de las bacterias.
Ya Tengo el Programa armado pero me he encontrado con un par de problemillas en tiempo de ejecucion que espero me ayuden a encontrarlos en la linea de codigo.
Les explico un poco la Arquitectura del Programa.
Es una matriz de 5x5 en la cual el 1 representa la (Vida) y el 0 represente la (Muerte).
Reglas.
Sobrevivencia: "Si una vida (1) esta rodeada por 2 o 3 Vidas".
Nacimiento: "Si una Muerte (0) esta rodeada por 3 vidas".
Muerte por soledad: "Si una Vida(1) esta rodeada por cero vidas(1)".
Muerte por sobrepoblacion: "Si una vida esta rodeada de 4 o más vidas(1)".
Problemas de Ejecucion.
Error por Memoria inaccesible. (Me Gustaria Saber que es lo que causa este error y porque.)
Desde ya Agradesco su apoyo.
Aqui el Codigo.
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#define Filas 5
#define Columnas 5
class tablero{
public:
int tab[Filas][Columnas];
//Construye el Tablero de Juego.
tablero();
//Valida si existe Vecino
bool valida_vida(int f, int c);
//Aplica las Reglas de Juego
void aplica_reglas();
//Muestra el Tablero
void mostrar();
};
//Constructor
tablero::tablero(){
randomize();
for(int i=1; i<=Filas; i++){
for(int j=1; j<=Columnas; j++){
tab[i][j]=random(2);
cout<<tab[i][j]<<" ";
}
cout<<"\n";
}
}
//Valida Vidas
bool tablero::valida_vida(int f,int c){
return(f>0 && f<Filas && c>0 && c<Columnas);
}
//Aplica Reglas de Juego
void tablero::aplica_reglas(){
int cont=0;
for(int i=1; i<=Filas; i++){
for(int j=1; j<=Columnas; j++){
//Conteo de Vecinos Vivos si no cumple se suponen muertos
if(valida_vida(i-1,j-1) && tab[i-1][j-1]==1) cont++;
if(valida_vida(i-1,j ) && tab[i-1][j ]==1) cont++;
if(valida_vida(i-1,j+1) && tab[i-1][j]==1) cont++;
if(valida_vida(i,j-1) && tab[i][j-1]==1) cont++;
if(valida_vida(i,j+1) && tab[i][j+1]==1) cont++;
if(valida_vida(i+1,j-1) && tab[i+1][j-1]==1) cont++;
if(valida_vida(i+1,j ) && tab[i+1][j ]==1) cont++;
if(valida_vida(i+1,j+1) && tab[i+1][j+1]==1) cont++;
//cout<<tab[i][j]<<" ";
//-------------
//Reglas
//-------------
//Sobrevivencia
if(cont==2 || cont==3){ }else{tab[i][j]=0;}
//Nacimiento
if(tab[i][j]==0 && cont==3){tab[i][j]==1;}
//Muerte por soledad
if(cont==0){tab[i][j]=0;}
//Muerte por sobrepoblacion
if(cont>=4){tab[i][j]=0;}
cout<<cont<<"\n";
mostrar();
getche();
cont=0;
}
//cout<<"\n";
}
}
void tablero::mostrar(){
for (int i=1; i<=Filas; i++){
for (int j=1; j<=Columnas; j++){
cout<<tab[i][j]<<" ";
}
cout<<"\n";
}
cout<<"\n";
}
void main(){
tablero juego;
int op;
do{
cout<<"1: Iniciar.\t2: Detener.\t3: Salir.\t0:Salir.\tOPCION: "; cin>>op;
switch(op){
case 1: juego.aplica_reglas(); juego.mostrar(); break;
}
}while(op!=0);
}
P.D
Si alguien está interesado en formar un equipo de Programadores de Juegos. No duden en avisarme.