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)
/*
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.







???? trate de compilarlo pero me salen muchos errores ademas que las librerias no estan definidas, o yo no se como correrlo o esta con muchos errores por tu parte y me tienen confundido…
#include // esta vacia las librerias
for (fila=1;fila //no cierras el for?????????????????
for (col=1;col //
tenia 25 errores y ahora tiene 12…. y hasta ahi nomas llegue
Uhmm descargate el código desde la web oficial, parece ser que WordPress da problemas en cuanto a códigos se refiere..
Autor: Imydes
Descripció: Joc de la vida
Data: 21/02/2008
*/
#include <stdio.h>
/*****************************
* 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<generacions;g++) {
printf("GENERACION %i\n",g+1);
for (fila=1;fila<MAX_COOR-1;fila++) {
for (col=1;col<MAX_COOR-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<MAX_COOR;fila++)
for (col=0;col<MAX_COOR;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<MAX_COOR-1;fila++) {
for (col=1;col<MAX_COOR-1;col++)
printf("%i",original[fila][col]);
printf("\n");
}
}