elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  El juego de la vida de Jhon Conway
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: El juego de la vida de Jhon Conway  (Leído 2,679 veces)
o0leumas0o

Desconectado Desconectado

Mensajes: 1


Ver Perfil
El juego de la vida de Jhon Conway
« en: 21 Noviembre 2011, 18:16 pm »

Hola,
Me gustaria que me ayudaran en mi trabajo sobre el jeugo de la vida de Jhon conway.
Tengo un problema, y esque no se como ir a la siguiente generacion. Es decir cuando el usuario establece la casilla, apreta "s" y deberian morir o reaparacer depndiendo de la vecinas. Aqui led dej mi codigo del tablero. Como pueden observar, cuan apreta la "s" va a un "void seguent_generacio (void)", le dejo el codigo de verificacion que esta mal, pero no se como hacerlo ya.
Gracias por adelantado

#include <stdio.h>
#include <stdlib.h>
#include <conio2.h>

#define FILES 24
#define COLUMNES 80

#define FINAL 'z'
#define CELULA 3

#define AMUNT 72
#define AVALL 80
#define ESQUERRA 75
#define DRETA 77

void dibuixa_quadre (void);
void seguent_generacio (void);
int controlint[24][80];
int controlintcop[24][80];
int x=0, x2=0; // Recoger las teclas del usuario
int i=0, j=0, cont=0;
int main (void)
{
    int medcols, medfils; // Posicion del cursor
            
    clrscr(); //Limpiar la pantalla
        
    dibuixa_quadre (); //Dibujar el cuadrado
    
    medcols = COLUMNES / 2; medfils = FILES /2;
    
    gotoxy (medcols,medfils); //gotoxy sirve para marcar la posicion, ahora esta en el centro
    
                    
    while (x!= FINAL){
          x=getch(); //es lo mismo que scanf, pero este no muestra las teclas por pantalla
          
          if(x==224){
             x2=getch();
            
             switch (x2){
                    case AMUNT:
                         if (medfils-2>0) medfils-=2;
                         break;
                    case AVALL:
                         if (medfils+2<=FILES) medfils+=2;
                         break;
                    case ESQUERRA:
                         if (medcols-2>0) medcols-=2;
                         break;
                    case DRETA:
                         if (medcols+2<COLUMNES) medcols+=2;
                         break;
                         }
                    gotoxy (medcols,medfils);
                    }
             //Se ha decidido que si apreta la tecla espacio se imprima el caracter
            
             if (x==32){
                controlint[medfils][medcols]=1;
                printf("%c", CELULA);
                gotoxy (medcols,medfils);}
                
             if (x=='s'){seguent_generacio();}
             }
             system ("pause");
}

void dibuixa_quadre (void)
{
     int i=0, j=0;
      for (i=0;i<24;i++){
         for (j=0;j<80;j++){
             controlint[j]=0;}} //inicialitzar el array
            
             i=0; j=0;

    for (i=0;i<24;i++){
         for (j=0;j<80;j++){
             controlintcop[j]=2;}} //inicialitzar el array de copia
    
     gotoxy (1,1);
    
     //Linia inicial de quadro
     printf ("%c%c%", 201,205);
    
     for (i=0; i<38;i++)
         printf("%c%c", 203, 205);
        
     printf("%c\n",187);
     for (j=0;j<12;j++){
         //linias verticales
        
         for (i=0;i<39;i++)
         printf ("%c ", 186);
        
         printf( "%c\n",186);
        
         //linies intermitges: 204, 206, 185
        
         if(j!=11){
            printf ("%c%c", 204,205);
            
            for (i=0; i<38;i++)
                printf ("%c%c",206,205);
                
                
            printf ("%c\n",185);
            } //cerrar el if
        
         }
          //linia para cerrar 200,202,188
          
          printf ("%c%c",200,205);
          
          for (i=0; i<38;i++)
              printf ("%c%c",202,205);
              
          printf ("%c",188);
}

void seguent_generacio (void){
     i=0; j=0;

          
     for (i=0; i<FILES; i++){
         for (j=0; j<COLUMNES; j++){
                  gotoxy (j,i);  
                    
     if(i-2>0 && controlint[i-2][j]==1){cont++;};
     if(i-2>0 && j-2>0 && controlint[i-2][j-2]==1){cont++;};
     if(i+2<FILES && controlint[i+2][j]==1){cont++;};
     if(i+2<FILES && j+2<COLUMNES && controlint[i+2][j+2]==1){cont++;};
     if(j-2>0 && controlint[j-2]==1){cont++;};
     if(j+2<COLUMNES && controlint[j+2]==1){cont++;};
            
             if (controlint[j]=1){
               if (controlint [j-2]=1){cont++;}
               if (controlint [j+2]=1){cont++;}
               if (controlint [i-2][j]=1){cont++;}
               if (controlint [i+2][j]=1){cont++;}
               if (controlint [i-2][j-2]=1){cont++;}
               if (controlint [i-2][j+2]=1){cont++;}
               if (controlint [i+2][j-2]=1){cont++;}
               if (controlint [i+2][j+2]=1){cont++;}}
              
              if (cont<=1 || cont>=4) { controlintcop[j]=0;  printf (" "); gotoxy (j,i); }
                       else { controlintcop[j]=1;  printf ("%c",CELULA); gotoxy (j,i); }
              
          
             if (controlint[j]=0){
               if (controlint [j-2]=1){cont++;}
               if (controlint [j+2]=1){cont++;}
               if (controlint [i-2][j]=1){cont++;}
               if (controlint [i+2][j]=1){cont++;}
               if (controlint [i-2][j-2]=1){cont++;}
               if (controlint [i-2][j+2]=1){cont++;}
               if (controlint [i+2][j-2]=1){cont++;}
               if (controlint [i+2][j+2]=1){cont++;}}
              
               if (cont==3) { controlintcop[j]=1; printf ("%c", CELULA);  gotoxy (j,i); }}
              
     for (i = 0; i< FILES; i++) {
         for (j = 0; j< COLUMNES; j++){
             gotoxy (j,i);
         if ( controlintcop[j]==0) { controlintcop[j]=0; controlint[j]=0;  printf (" "); gotoxy (j,i); }      
         if ( controlintcop[j]==1) { controlintcop[j]=1; controlint[j]=1;  printf ("%c",CELULA); gotoxy (j,i);}}}
}


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Juego de la vida en Python
Scripting
SirLanceCC 1 6,331 Último mensaje 9 Diciembre 2006, 14:39 pm
por SirLanceCC
Ayuda Juego de la Vida en C
Programación C/C++
neji8 0 3,482 Último mensaje 21 Agosto 2011, 01:25 am
por neji8
El Juego de la vida de John Horton
Juegos y Consolas
emmHB 0 3,002 Último mensaje 15 Octubre 2012, 20:46 pm
por emmHB
El juego de la vida de John Conway
Programación C/C++
bl@ck 0 4,912 Último mensaje 14 Enero 2015, 19:23 pm
por bl@ck
Ayuda Juego De la Vida-Conway graficos
Programación C/C++
SkaTrumpet 2 2,167 Último mensaje 29 Marzo 2016, 18:30 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines