Ejemplo de programación de juegos en lenguaje C
/* -------------------------------------- --- ---------------- */
/* 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*/ p>
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]; p>
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. */
/* --------------------------------------- -- - --------------- */