Hoy quería hablaros de un juego que ha publicado mi compañero Imydes y el cuál quiere compartir con todo el mundo. He aquí la creación de “Un Juego de la Vida”;
Los Requisitos: con las típicas librerias ANSI C y un compilador de C en condiciones (Veasé gcc(Linux/Unix) ó Dev C++ (Win32) debería bastaros para probar el juego, aún así cualquier duda que se os proponga podeís dejarmela aquí o en la web de mi compi sin ningún problema. La licencia es CC (Creative Commons)
Web Oficial de Imydes
/*
Autor: Imydes
Descripció: Joc de la vida
Data: 21/02/2008
*/
#include
/*****************************
* Definicions *
****************************/
#define MAX_COOR 7
/*****************************
* Tipus *
*****************************/
typedef int Tterreny[MAX_COOR][MAX_COOR];
/*****************************
* Capcelera de les funcions *
******************************/
void preparar_terreny(Tterreny &original, Tterreny &temporal);
void inserir_habitants(Tterreny &original);
void mostrar_terreny(Tterreny &original);
int obtenir_generacions(void);
void resoldre_terreny(int generacions, Tterreny &original, Tterreny &temporal);
void copiar_terreny(Tterreny &original,Tterreny &temporal);
int main() {
int generacions;
Tterreny original, temporal;
printf(”Introduce los habitantes mediante coordenadas, la tabla es de 5×5\n”);
preparar_terreny(original, temporal);
inserir_habitants(original);
mostrar_terreny(original);
generacions = obtenir_generacions();
resoldre_terreny(generacions, original, temporal);
return 0;
}
/* Copiar Terreny */
void copiar_terreny(Tterreny &original,Tterreny &temporal) {
int fila, col;
for (fila = 1; fila < MAX_COOR-1;fila++)
for (col = 1; col < MAX_COOR-1; col++)
original[fila][col] = temporal[fila][col];
}
/* Gestió d’habitants del terreny */
void resoldre_terreny(int generacions, Tterreny &original, Tterreny &temporal) {
int g, fila, col;
int contador;
for(g=0;g
printf(“GENERACION %i\n”,g+1);
for (fila=1;fila
for (col=1;col
contador = 0;
contador = original[fila-1][col-1]+original[fila-1][col]+original[fila-1][col+1];
contador = contador+original[fila][col-1]+original[fila][col+1];
contador = contador+original[fila+1][col-1]+original[fila+1][col]+original[fila+1][col+1];
/* Decidim si creem o eliminem un habitant */
if (original[fila][col] == 1) {
if (contador == 2 || contador == 2 ) {
temporal[fila][col] = 1;
}
else {
temporal[fila][col] = 0;
}
}
else {
if (contador == 3) temporal[fila][col] = 1;
else temporal[fila][col] = 0;
}
printf(“%i”,temporal[fila][col]);
}
printf(“\n”);
}
copiar_terreny(original,temporal);
}
}
/* Preparació del terreny */
void preparar_terreny(Tterreny &original, Tterreny &temporal) {
int fila, col;
for (fila=0;fila
for (col=0;col
original[fila][col] = 0;
temporal[fila][col] = 0;
}
}
/* Sistema d’insersió d’habitants */
void inserir_habitants(Tterreny &original) {
int fila, col;
do {
scanf(“%i”,&fila);
scanf(“%i”,&col);
if (fila > 0 && fila < MAX_COOR-1 && col > 0 && col < MAX_COOR-1)
if (original[fila][col] == 1)
printf(“Ya tienes un habitante en la casilla %i:%i\n”,fila,col);
else
original[fila][col] = 1;
else
if (fila != 0 || col != 0) printf(“El terreno es de 1×5 x 1×5\n”);
}while(fila != 0 || col != 0);
}
/* Obtenim el nombre de generacions */
int obtenir_generacions(void) {
int generacions;
printf(“Dime el numero de generacions que quieres que haga (valor positivo)\n”);
do {
scanf(“%i”,&generacions);
printf(“\n”);
}while(generacions < 1);
return generacions;
}
/* Mostrem el terreny amb els habitants */
void mostrar_terreny(Tterreny &original) {
int fila, col;
for (fila=1;fila
for (col=1;col
printf(“%i”,original[fila][col]);
printf(“\n”);
}
}
PS: Como ya sabreís WordPress no preformatea correctamente el texto, asíque para una versión completa del código fuente, ir al weblog del autor, más arriba indicado.
Comentarios recientes