Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/07/2017, 03:18
alanjo
 
Fecha de Ingreso: marzo-2016
Mensajes: 15
Antigüedad: 8 años, 1 mes
Puntos: 0
Exclamación Problema con compilado de "El juego de la vida"

Buenas chicos/as, espero que estén bien, les comento; estoy haciendo el famoso "juego de la vida" y me topé con los siguientes errores en la compilación y llevo horas sin saber qué es, no encuentro la llave no cerrada y cosas varias. Los errores son los siguientes:

C:\Users\***\Desktop\Programación C++\practicas\practicas\vida.cpp|4|error: 'Vida::Vida' nombra el constructor, no el tipo|

C:\Users\***\Desktop\Programación C++\practicas\practicas\vida.cpp|27|error: la declaración no puede resolver la dirección de la función sobrecargada|

C:\Users\***\Desktop\Programación C++\practicas\practicas\vida.cpp|28|error: qualified-id in declaration before '(' token|

C:\Users\***\Desktop\Programación C++\practicas\practicas\main.cpp|22|error: expected '}' at end of input|


El header es vida.h :

Código C++:
Ver original
  1. #ifndef VIDA_H_INCLUDED
  2. #define VIDA_H_INCLUDED
  3.  
  4. #include <iostream>
  5.  
  6. #define FILAS 10
  7. #define COLUMNAS 10
  8.  
  9. #define VIDA '*'
  10. #define MUERTE ' '
  11.  
  12. #define UMBRAL_INANICION 2
  13. #define UMBRAL_SUPERPOBLACION 3
  14.  
  15. enum eDir{
  16.     ARR_IZQ=0,
  17.     ARR=1,
  18.     ARR_DER=2,
  19.     DER=3,
  20.     DER_ABJ=4,
  21.     ABJ=5,
  22.     ABJ_IZQ=6,
  23.     IZQ=7
  24. };
  25.  
  26. class Vida{
  27.  
  28.     //Mapa
  29.     char m_mapa[FILAS][COLUMNAS];
  30.  
  31.     // Cuenta la cantidad de vidas adyacentes a la posición pasada como parámetro
  32.     int contarAdyacentes(int fila, int columna);
  33.     //Lee el valor de una posición según lo que indican los parámetros
  34.     int leerValor(int fila, int columna, eDir dir);
  35.     //Indica si la posición es válida o no
  36.     bool posValida(int fila, int columna);
  37.  
  38. public:
  39.     Vida();
  40.     void Generar();
  41.     void Mostrar();
  42. };
  43.  
  44. #endif // VIDA_H_INCLUDED

El vida.cpp donde inicializo funciones es:
Código C++:
Ver original
  1. #include "vida.h"
  2. #include <memory.h>
  3.  
  4. Vida::Vida;
  5.  
  6. Vida::Vida(){
  7.     //Limpiar
  8.     for(int i=0; i<FILAS;i++){
  9.         for(int j=0; j<COLUMNAS;j++)
  10.             m_mapa[i][j] = ' ';
  11.     }
  12.  
  13.     //Se pone valores en el mapa
  14.  
  15.     m_mapa[3][2]= '*';
  16.     m_mapa[3][4]= '*';
  17.     m_mapa[2][3]= '*';
  18.     m_mapa[4][3]= '*';
  19.     m_mapa[2][2]= '*';
  20.     m_mapa[4][4]= '*';
  21.     m_mapa[2][4]= '*';
  22.     m_mapa[4][2]= '*';
  23.  
  24.  
  25.  
  26.     //REGLAS
  27.     Vida::Generar;
  28.     void Vida::Generar(){
  29.     int iConteo;
  30.  
  31.     char mapa[FILAS][COLUMNAS];
  32.  
  33.     memcpy(mapa, m_mapa, sizeof(m_mapa));
  34.     for(int i=0; i<FILAS; i++){
  35.         for(int j=0; j<COLUMNAS; j++){
  36.             iConteo = contarAdyacentes(i,j);
  37.  
  38.             // Cuando el numero es igual al umbral de inanicion no pasa nothing
  39.             if(iConteo == UMBRAL_INANICION){
  40.                 mapa[i][j] == MUERTE;
  41.             }
  42.             else if(iConteo > UMBRAL_INANICION && iConteo <= UMBRAL_SUPERPOBLACION){
  43.                 mapa[i][j] = VIDA;
  44.             }
  45.             else if(iConteo > UMBRAL_SUPERPOBLACION){
  46.                 mapa[i][j] = MUERTE;
  47.             }
  48.         }//FOR
  49.         memcpy(m_mapa, mapa, sizeof(mapa))
  50.     }//FOR
  51.     }// Generar
  52.  
  53.     Vida::contarAdyacentes
  54.     //Cuenta la cantidad de vidas adyacentes
  55.     int Vida::contarAdyacentes(int fila, int columna){
  56.     return (leerValor(fila, columna, ARR_IZQ) + leerValor(fila, columna, ARR) + leerValor(fila, columna, ARR_DER) +
  57.             leerValor(fila, columna, DER) + leerValor(fila, columna, DER_ABJ) + leerValor(fila, columna, ABJ) +
  58.             leerValor(fila, columna, ABJ_IZQ) + leerValor(fila, columna, IZQ));
  59.     }
  60.  
  61.     Vida::leerValor;
  62.  
  63.     int Vida::leerValor(int fila, int columna, eDir dir)
  64.     {
  65.  
  66.     if(dir == ARR_IZQ && posValida(fila-1,columna-1)){
  67.         return ((m_mapa[fila-1][columna-1] == VIDA)? 1:0);
  68.     }
  69.     else if(dir == ARR && posValida(fila-1, columna)){
  70.         return ((m_mapa[fila-1][columna] == VIDA)? 1:0);
  71.     }
  72.     else if(dir == ARR_DER && posValida(fila-1, columna+1)){
  73.         return ((m_mapa[fila-1][columna+1] == VIDA)? 1:0);
  74.     }
  75.     else if(dir == DER && posValida(fila, columna+1)){
  76.         return ((m_mapa[fila][columna+1] == VIDA)? 1:0);
  77.     }
  78.     else if(dir == DER_ABJ && posValida(fila+1, columna+1)){
  79.         return ((m_mapa[fila+1][columna+1] == VIDA)? 1:0);
  80.     }
  81.     else if(dir == ABJ && posValida(fila+1, columna)){
  82.         return ((m_mapa[fila+1][columna] == VIDA)? 1:0);
  83.     }
  84.     else if(dir == ABJ_IZQ && posValida(fila+1, columna-1)){
  85.         return ((m_mapa[fila+1][columna-1] == VIDA)? 1:0);
  86.     }
  87.     else if(dir == IZQ && posValida(fila, columna-1)){
  88.         return ((m_mapa[fila][columna-1] == VIDA)? 1:0);
  89.     }
  90.     else{
  91.         return 0;
  92.     }
  93.  
  94.     }//Leer Valor
  95.  
  96.     Vida::posValida;
  97.  
  98.     bool Vida::posValida(int fila, int columna){
  99.         return(fila >= 0 && fila < FILAS && columna >= 0 && columna < COLUMNAS);
  100.     }
  101.  
  102.     Vida::Mostrar;
  103.  
  104.     void Vida::Mostrar(){
  105.  
  106.     for(int i = 0;i < FILAS;i++){
  107.         for(int j = 0; j < COLUMNAS; j++)
  108.             cout << m_mapa[i][j];
  109.  
  110.         cout << endl;
  111.     }
  112.  
  113.     }//MOSTRAR
  114.  
  115.     }//VIDA!!!!!!

Y el main.cpp es:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include "vida.h"
  5. #include "vida.cpp"
  6.  
  7. using namespace std;
  8. int main(){
  9.  
  10.     Vida vida1;
  11.  
  12.     vida1.Mostrar();
  13.  
  14.     for(int i = 0; i<100;i++){
  15.         sleep(100);
  16.         vida1.Generar();
  17.         system("cls");
  18.         vida1.Mostrar();
  19.         }
  20.     return 0;
  21.  
  22. }


Agradecería sus colaboraciones de antemano y que tengan una excelente jornada.

PD: Uso CodeBlocks

Última edición por alanjo; 16/07/2017 a las 03:23