Holaa buenasss...
Tengo que entregar mañana en la facultad el juego de la vida, si ya se que me tendria que haber metido antes a hacerlo pero soy asi XD todo para el final. El tema es que esta incompleto y no se como terminarlo ( no me doy cuenta ) y otro tema es que no me compila, me dice como que las funciones que tengo no estan declaradas o algo asi, les paso todo el codigo para q me digan.
Ante todo Muchas Gracias. Chauu.
Ah la idea era separar el codigo en 1 archivo.h y otro .cpp pero no me funcionaba bn XD.
#include <cstdlib>
#include <iostream>
//#include "Clase.h"
#include <conio.h>
using namespace std;
// Comienzo de la clase celula
class celula {
int estado;
int vecVivos;
public:
int vecVida;
// if muerta revive
void revivir(){
if (obtenerEstado() == 0) {
modEstado();
}
}
// Actualiza el valor de vecinos vivos // no se si esta bn esto!!
void actVec(int cantVecVivos){
vecVida = cantVecVivos + vecVida;
;
}
// if viva matar
void matar(){
if (obtenerEstado() == 1) {
modEstado();
}
}
// modifica estado
void modEstado(){
if (estado == 0) {
estado = 1;
}else{
estado = 0;
}
}
// return 1 o 0
int obtenerEstado(){
if (estado == 0) {
return 0;
}else{
return 1;
}
}
};
// Creacion del mapa
celula Map[20][20];
// Analiza el centro de la matriz
void centro(){
int cant;
for (int i=1;i<19,i++){
for (int j=1;j<19,j++)
{
cant=0;
if (Map[i-1][j-1].obtenerEstado() == 1 ) cant++;
if (Map[i-1][j].obtenerEstado() == 1 ) cant++;
if (Map[i-1][j+1].obtenerEstado() == 1 ) cant++;
if (Map[i][j-1].obtenerEstado() == 1 ) cant++;
if (Map[i][j+1].obtenerEstado() == 1 ) cant++;
if (Map[i+1][j-1].obtenerEstado() == 1 ) cant++;
if (Map[i+1][j].obtenerEstado() == 1 ) cant++;
if (Map[i+1][j+1].obtenerEstado() == 1 ) cant++;
Map[i][j].actVec(cant);
}
}
}
// Analiza las 4 esquinas
//Analiza esquina Superior Izq
void esquina1(){
int cant = 0;
if (Map[0][1].obtenerEstado() == 1) cant++;
if (Map[1][1].obtenerEstado() == 1 ) cant++;
if (Map[1][0].obtenerEstado() == 1 ) cant++;
if (Map[0][19].obtenerEstado() == 1 ) cant++;
if (Map[1][19].obtenerEstado() == 1 ) cant++;
if (Map[19][0].obtenerEstado() == 1 ) cant++;
if (Map[19][1].obtenerEstado() == 1 ) cant++;
if (Map[19][19].obtenerEstado() == 1 ) cant++;
Map[0][0].actVec(cant);
}
//Analiza esquina Superior Der
void esquina2(){
int cant = 0;
if (Map[0][18].obtenerEstado() == 1) cant++;
if (Map[1][18].obtenerEstado() == 1 ) cant++;
if (Map[1][19].obtenerEstado() == 1 ) cant++;
if (Map[0][0].obtenerEstado() == 1 ) cant++;
if (Map[1][0].obtenerEstado() == 1 ) cant++;
if (Map[19][0].obtenerEstado() == 1 ) cant++;
if (Map[19][1].obtenerEstado() == 1 ) cant++;
if (Map[19][19].obtenerEstado() == 1 ) cant++;
Map[0][19].actVec(cant);
}
//Analiza esquina Inferior Izq
void esquina3(){
int cant = 0;
if (Map[18][0].obtenerEstado() == 1) cant++;
if (Map[18][1].obtenerEstado() == 1 ) cant++;
if (Map[19][1].obtenerEstado() == 1 ) cant++;
if (Map[18][19].obtenerEstado() == 1 ) cant++;
if (Map[19][19].obtenerEstado() == 1 ) cant++;
if (Map[0][19].obtenerEstado() == 1 ) cant++;
if (Map[0][0].obtenerEstado() == 1 ) cant++;
if (Map[0][1].obtenerEstado() == 1 ) cant++;
Map[19][0].actVec(cant);
}
//Analiza esquina Inferior Der
void esquina4(){
int cant = 0;
if (Map[19][18].obtenerEstado() == 1) cant++;
if (Map[18][18].obtenerEstado() == 1 ) cant++;
if (Map[18][19].obtenerEstado() == 1 ) cant++;
if (Map[18][0].obtenerEstado() == 1 ) cant++;
if (Map[19][0].obtenerEstado() == 1 ) cant++;
if (Map[0][19].obtenerEstado() == 1 ) cant++;
if (Map[0][18].obtenerEstado() == 1 ) cant++;
if (Map[0][0].obtenerEstado() == 1 ) cant++;
Map[19][19].actVec(cant);
}
// Analiza los 4 Laterales
void lateralIzq(){
int cant;
for (int i = 1; i<=18; i++)){
cant= 0;
if (Map[i-1][0].obtenerEstado() == 1) cant++;
if (Map[i-1][1].obtenerEstado() == 1 ) cant++;
if (Map[i][1].obtenerEstado() == 1 ) cant++;
if (Map[i+1][1].obtenerEstado() == 1 ) cant++;
if (Map[i+1][0].obtenerEstado() == 1 ) cant++;
if (Map[i-1][19].obtenerEstado() == 1 ) cant++;
if (Map[i][19].obtenerEstado() == 1 ) cant++;
if (Map[i+1][19].obtenerEstado() == 1 ) cant++;
Map[i][0].actVec(cant);
}
}
void lateralDer(){
int cant;
for (int i = 1; i<=18; i++)){
cant= 0;
if (Map[i-1][19].obtenerEstado() == 1) cant++;
if (Map[i-1][18].obtenerEstado() == 1 ) cant++;
if (Map[i][18].obtenerEstado() == 1 ) cant++;
if (Map[i+1][18].obtenerEstado() == 1 ) cant++;
if (Map[i+1][19].obtenerEstado() == 1 ) cant++;
if (Map[i-1][0].obtenerEstado() == 1 ) cant++;
if (Map[i][0].obtenerEstado() == 1 ) cant++;
if (Map[i+1][0].obtenerEstado() == 1 ) cant++;
Map[i][19].actVec(cant);
}
}
void lateralArriba(){
int cant;
for (int j = 1; j<=18; j++)){
cant= 0;
if (Map[0][j-1].obtenerEstado() == 1) cant++;
if (Map[1][j-1].obtenerEstado() == 1 ) cant++;
if (Map[1][j].obtenerEstado() == 1 ) cant++;
if (Map[0][j+1].obtenerEstado() == 1 ) cant++;
if (Map[1][j+1].obtenerEstado() == 1 ) cant++;
if (Map[19][j-1].obtenerEstado() == 1 ) cant++;
if (Map[19][j].obtenerEstado() == 1 ) cant++;
if (Map[19][j+1].obtenerEstado() == 1 ) cant++;
Map[0][j].actVec(cant);
}
}
void lateralAbajo(){
int cant;
for (int j = 1; j<=18; j++)){
cant= 0;
if (Map[19][j-1].obtenerEstado() == 1) cant++;
if (Map[18][j-1].obtenerEstado() == 1 ) cant++;
if (Map[18][j].obtenerEstado() == 1 ) cant++;
if (Map[18][j+1].obtenerEstado() == 1 ) cant++;
if (Map[19][j+1].obtenerEstado() == 1 ) cant++;
if (Map[0][j-1].obtenerEstado() == 1 ) cant++;
if (Map[0][j].obtenerEstado() == 1 ) cant++;
if (Map[0][j+1].obtenerEstado() == 1 ) cant++;
Map[19][j].actVec(cant);
}
}
// Carga Inicial del TABLERO y Menu!
void cargarTablero(celula Map[20][20],char op){
do
{
op = getche();
switch (op) {
case '1': cout << "Opcion 1" << endl;
Map[0][0].revivir();
Map[19][0].revivir();
Map[19][19].revivir();
Map[0][19].revivir();
break;
case '2': cout << "Opcion 2" << endl;
Map[9][9].revivir();
Map[9][8].revivir();
Map[9][7].revivir();
Map[8][8].revivir();
Map[7][8].revivir();
Map[6][8].revivir();
break;
case '3': cout << "Opcion 3" << endl;
Map[1][1].revivir();
Map[3][3].revivir();
Map[3][4].revivir();
Map[4][3].revivir();
Map[4][5].revivir();
Map[5][3].revivir();
break;
case 'q': cout << "Cerrando Programa" << endl;
default : cout << "Esta tecla no Sirve, elegi otra" << endl;
}
getch();
system("cls");
}
while (a != 'q');
}
//actualiza tablero e imprime 1 x 1
for (int i = 0; i<20; i++) {
for (int j = 0; j<20; j++){
if ((Map[i][j].obtenerEstado() == 0) && (Map[i][j].vecVida == 3)) {
Map [i][j].revivir();
}
if ((Map[i][j].obtenerEstado() == 1 ) && (Map[i][j].vecVida != 3) && (Map[i][j].vecVida != 2)){
Map [i][j].matar();
}
if (obtenerEstado == 1){
cout << " x";
}else{
cout << " O";
}
cout << endl;
}
}
int main(int argc, char *argv[])
{
system("PAUSE");
return EXIT_SUCCESS;
}