ELO-330: Comunicación entre procesos con pipes y programación de sockets
Tarea 3: Batalla Naval entre dos

Nombre: bnv2: Batalla Naval versión 2

Sintaxis: bnv2 <archivo_porta-avion> <archivo_crucero> <archivo_submarino> <puerto_local>  <destino> <puerto_remoto>

Descripción

bnv2 es una aplicación del tipo peer-to-peer que permite jugar a la "Batalla Naval"
bnv2 es un programa que maneja dos tableros de "tableros" de 10x10 sectores. Cada tablero tiene subdivisiones que muestras los 10x10 sectores. En uno de los tableros se ubican figuras cuyo diseño está estipulado en los tres archivos pasados como parámetros. Un porta-aviones ocupa tres sectores horizontales, un crucero dos sectores y un submarino uno.
En el otro tablero se anotarán los disparos que usted haga.

Iniciación del juego
bnv2 muestra los dos tableros tan pronto se inicia el juego. Luego por consola se solicita que el usuario ingrese tres posiciones (0..9,0..9). La primera posición definirá la ubicación del porta-avión, la segunda la posición del crucero, y la última la del submarino.

Desarrollo del juego
Luego bnv2 solicita el ingreso del primer disparo hacia el oponente. En respuesta al disparo, bnv2 dibuja en el tablero de disparos un círculo azul en la posición si el disparo cayo en el agua. Se dibujará un círculo rojo si da en un el blanco. Además en caso de hacer blanco se muestra por pantalla el tipo de embarcación impactada (porta-avión, crucero, o submarino). bnv2 no acepta otro disparo hasta que el contrario haya enviado el suyo y la respuesta haya sido enviada. Ante la llegada de un disparo del contrario, bnv2 muestra en el tablero de embarcaciones un círculo verde si el disparo cayó en agua y uno rojo si dio en un barco.

Término del juego
El juego termina cuando uno de los jugadores logra hundir todos los barcos del oponente. El juego no requiere llevar la cuenta, cada jugador lo notará.

Formato de los mensajes entre pares:
Descripción
Formato: String formado de:
Explicación
Envio de siparo
"Disparo" ´:´ <x>´:´<y>   
x ,  y : "0".."9", : es el separador
Respuesta a disparo exitoso
"Blanco" ´:´ ( "Porta-avion" | "Crucero" | "Submarino" )  ´:´ <x> ´:´ <y>
| : se interpreta como una de las opciones.
Respuesta a disparo fallido
"Agua" ´:´ <x> ´:´ <y>


Manual de uso de gnuplot
Ejemplo sobre pipes barco.txtx

Programas similares en la red (no para desarrollos de 15 dias): Sea-Battle en applet otro