Nombre:
bnv2: Batalla Naval versión 2.
Sintaxis:
bnv2 <archivo_porta-avion> <archivo_fragata>
<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á.
Implementación:
La estructura implementada se muestra en la figura 1. Existen 4
procesos por jugador: 1 proceso denominado servidor, que es el proceso
padre, 1 proceso hijo denominado cliente y 2 procesos que controlan los
respectivos tableros. La comunicación entre procesos se hace a
través de pipas y de sockets.

Diagrama de Flujo:
El siguiente diagrama de flujo resume el funcionamiento de los procesos
en un jugador, que implementan el programa bnv2. Se deben considerar
algunos puntos:
- La selección de turnos se hace en forma aleatoria:
Cada jugador (proceso servidor) genera un turno aleatorio. En cada
cliente se realiza la comparación y de esta forma el que genera
el valor más alto parte.
- El turno se va pasando a través de un token: Esto
permite detectar cuando un tablero de naves se ha quedado sin
embarcaciones y poder cerrar los procesos y conexiones en forma
ordenada, para ambos jugadores.

|