/* * File: batallanaval.c * Author: Rodrigo Fuentealba * */ #include #include #define LLENO 'X' #define VACIO ' ' #define AGUAS '+' #define PUNTO '*' #define LARGO 5 #define BUQUE 5 /* * Estructura para manejo de posiciones */ typedef struct { int x; int y; } posicion; /* * Estructura para manejo de informacin de los jugadores */ typedef struct { int puntos; char campo[LARGO][LARGO]; } jugador; /* * Enumeracin de booleanos */ typedef enum { false, true } boolean; /* * Operaciones de pantalla */ /* * Limpiando la pantalla */ void pantalla_limpiar(void) { printf("\033[2J"); } /* * Escribiendo una linea */ void pantalla_imprimirlinea(void) { printf("\n"); printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="); printf("\n"); } /* * Mostrando el ttulo del juego */ void pantalla_mostrartitulo(void) { pantalla_imprimirlinea(); printf(" LA BATALLA NAVAL "); pantalla_imprimirlinea(); } /* * Mostrando el campo */ int pantalla_mostrarcampo(char campo[LARGO][LARGO], boolean visible) { int i; int j; printf("\nY |"); printf("\n---|------------------------"); for(i=LARGO-1;i>=0;i--) { printf("\n%d | ", i); for(j=0;j= LARGO) { if(auxiliar == true) { printf("\a"); printf("\nValor fuera de rango."); } printf("\nIngrese el valor X de la posicion:"); fscanf(stdin, "%d", &ingreso.x); fflush(stdin); auxiliar = true; } ingreso.y = -1; auxiliar = false; while(ingreso.y < 0 || ingreso.y >= LARGO) { if(auxiliar == true) { printf("\a"); printf("\nValor fuera de rango. X es igual a %d", ingreso.x); } printf("\nIngrese el valor Y de la posicion:"); fscanf(stdin, "%i", &ingreso.y); fflush(stdin); auxiliar = true; } return ingreso; } char posicion_leer(char campo[LARGO][LARGO], posicion ingreso) { return (campo[ingreso.x][ingreso.y]); } int posicion_escribir(char campo[LARGO][LARGO], posicion ingreso, char valor) { campo[ingreso.x][ingreso.y] = valor; return 0; } boolean posicion_comparar (char campo[LARGO][LARGO], posicion ingreso, char valor) { if(campo[ingreso.x][ingreso.y] == valor) { return true; } else { return false; } } /* * Operaciones de matriz */ /* * Limpiar el campo de trabajo */ int campo_limpiar(char campo[LARGO][LARGO]) { int i; int j; for(i=0;i