Foros del Web » Programación para mayores de 30 ;) » C/C++ »

El juego de la vida de Jhon Conway

Estas en el tema de El juego de la vida de Jhon Conway en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/11/2011, 18:32
 
Fecha de Ingreso: noviembre-2011
Mensajes: 1
Antigüedad: 12 años, 5 meses
Puntos: 0
El juego de la vida de Jhon Conway

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.
Realmente ya no se que hacer UU'.
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);}}}
}

Etiquetas: juego, programacacion, vida
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:26.