Red de conocimiento informático - Computadora portátil - Ejemplo de programación de juegos en lenguaje C

Ejemplo de programación de juegos en lenguaje C

Juego de la vida

/* -------------------------------------- --- ---------------- */

/* PROGRAMA juego de la vida: */

/* Este es un finito Esta es una implementación finita del */

/* Juego de la vida de John H. Conway. Consulte mi libro para obtener más detalles. */

/* */

/* Copyright Ching-Kuang Shene 25/julio/1989 */

/* ------- ----------------------------------------- */

#include lt; stdio.hgt;

#include lt; stdlib.hgt;

#define MAXSIZE 50 /* Tamaño de la placa*/

#define OCUPADO 1 /* Bandera de ocupado*/

#define DESOCUPADO 0

#define SÍ 1

#define NO 0

char cell[MAXSIZE][MAXSIZE]; /*placa de circuito*/

char workcopy[MAXSIZE][MAXSIZE] /*copia de trabajo*/

int fila; /*El número de filas que deseas*/

#define NO 0El número de filas que deseas*/

int column /*El número de columnas que deseas*/

int generaciones; /* Número máximo de generaciones*/

/* ------------ ------------- - ---------------------------- */

/* FUNCIÓN read_in: */

/* Esta función lee en la generación, */

/* número de filas, número de columnas y finalmente */

/* la configuración inicial (generación 0) . Luego coloque */

/* su configuración en el centro del tablero. */

/* --------------------------------------- --------------- */

void read_in(void)

{

int max_row, max_col; * Número máximo de filas y columnas.

*/

int col_gap, row_gap; /* Incremento de filas y columnas*/

int i, j;

char line[100];

p>

gets(line); /* Leer en generaciones, filas y columnas*/

sscanf(line, "ddd", amp; generaciones, amp; fila, amp.columna); /p>

for (i = 0; i lt; fila; i)/* limpiar el tablero */

for (j = 0; j lt; columna; j)

celda[i][j] = NO OCUPADO;

max_col = 0; /* leído en la configuración.*/

for (max_row = 0; gets(line ) ! = NULL; max_row ) {

para (i = 0; línea[i] ! = '\0'; i )

si (línea[i] ! = ' ' )

celda[max_row][i] = OCUPADO;

max_col = (max_col lt; i) ?i: max_col;

}

row_gap = (fila - max_row)/2; /* espacio en movimiento*/

col_gap = (columna - max_col)/2

for (i = max_row row_gap - 1; yo gt; = fila_gap - 1; i gt; = fila_gap - 1; i gt; = fila_gap - 1; i gt; p> for (j = max_col col_gap - 1; j gt; = col_gap; j--)

celda[i][j] = celda[i-row_gap][j-col_gap];

for ( ; j gt.= 0; j--)

celda[i][j] = DESOCUPADO

}

for ( ; i gt; = 0; i--)

for (j = 0; j lt; columna; j )

celda[i][j] = DESOCUPADO ;

}

/* -------------------------------- - ---------------------- */

/* Pantalla de FUNCIÓN: */

/* Placa de circuito de visualización .

*/

/* ------------------------------------------- ---- ----------- */

#define DRAW_BOARDER(n) { int i \

printf("\n "); \

for (i = 0; i lt; n; i) \

printf("-"); \

printf(" "); \

}

visualización nula (int gen_no)

{

int i, j;

si (gen_no == 0)

printf("\n\nGeneración inicial:\n");

else

printf("/n\nGeneración d :\n" , gen_no);

DRAW_BOARDER(columna);

for (i = 0; i lt; fila; i) {

printf( "\n|");

for (j = 0; j lt; columna; j )

printf("c", (celda[i][ j] == OCUPADO) ?'*' : ' ');

printf("|");

}

DRAW_BOARDER(columna); /p>

}

/* ---------------------------------- ------- ------------ ---- */

/* FUNCIÓN game_of_life: */

/* Esto es la función principal de Game of Life. */

/* --------------------------------------- -- - --------------- */