Batalla Naval Multijugador

Objetivo

Aplicar los conceptos vistos en clase y desarrollados a lo largo de las tareas semanales para desarrollar un sistema que permita jugar batalla naval en un ambiente de multijugadores, en un esquema cliente/servidor.

Descripción

El juego de Batalla Naval esta normalmente definido para ser jugado entre dos jugadores (ejemplo).

Lo que se busca desarrollar es poder jugar batalla naval pero entre múltiples jugadores conectados en red. Para tal fin, las reglas básicas del juego deben ser alteradas para permitir el juego multijugador y volverlo un poco más atractivo. La nuevas reglas son:

  • Cada tablero es una matriz de NxN.
  • Cada jugador cuenta con un numero determinado de barcos a ubicar en el tablero. Los barcos puedes ser de tamaños distintos.
  • No se pueden ubicar barcos que se solapen en una casilla o casillas de la matriz.
  • El juego se inicia con algún jugador escogido al azar y se continua jugando por turnos.
  • En cada turno el jugador puede tomar alguna de las siguientes acciones:
    • Escoger uno de los jugadores contrincantes y disparar
    • Mover una casilla uno de los barcos. Los movimientos permitidos son hacia adelante y hacia atras, siempre y cuando el barco se pueda mover. (ver más adelante)
  • La acción de disparar puede ser: disparar el cañón o poner una mina. El disparar el cañón retro alimenta al los jugador (el que dispara y el que recibe el disparo) sobre el éxito del disparo. Se puede disparar el cañón al mismo sitio. Colocar una mina solo queda visible su localización al jugador que lo coloco. En caso que la mina explote se le informa a los jugadores que colocaron la mina y al jugador que pertenece el barco.
  • El daño producido por el cañón es destruir parte del barco y deshabilita al barco para moverse. Una mina genera daño (un impacto) pero permite que el barco siga en movimiento.
  • El número de impactos que recibe un barco antes de ser hundido es igual al tamaño del barco. Impactos sobre el mismo sitio no se cuentan.
  • Gana el juego el que mantenga por lo menos alguno de sus barcos a flote
  • FIXME

El juego de batalla naval multijugador debe contar con un servidor en donde cada uno de los jugadores se conectan para poder jugar. El servidor se encarga de sincronizar los turnos y de gateway de mensajes entre los jugadores. La conexión entre el servidor y los clientes debe realizarse por medio de Sockets. Los clientes luego de conectarse al servidor visualizan su tablero y la de los demás jugadores conectados al servidor. Se inicia luego una fase para ubicar los barcos otorgados por el servidor y luego espera por su turno. En cada turno, el jugador debe jugar según las reglas establecidas previamente.

Debe existir la manera de poder “observar” el progreso del juego por parte de los clientes espectadores, posiblemente vía Web. El servidor debe soportar conexiones tipo web services (SOAP o XML-RPC) para configurar u obtener información del juego.  

Especificaciones

Al finalizar el proyecto se desea obtener:

  • Una implementación funcional del sistema.
  • Diseño de un protocolo de comunicación entre los clientes (jugadores y espectadores) y el servidor
  • El servidor debe sincronizar las acciones que realizan los jugadores y retornar información a los jugadores (retroalimentación) de los que sucedido durante su turno.
  • Los barcos y el tablero pueden ser manejados por los clientes o por el servidor, teniendo en cuenta los cambios que se deben realizar a los datos por cada turno jugado.
  • Se debe definir la dimensiones, el numero de barcos y sus tamaños, al igual que las reglas del juego y el marcador del juego.
  • El servidor debe también soportar la configuración y consulta de sus parámetros por medio de web-services y consultas vía web.
  • Cada Jugador (cliente) debe mantener información necesaria para poderse jugar.
  • La comunicación entre jugadores y el servidor se debe realizar usando Sockets.
  • De alguna manera se debe poder ver de manera gráfica lo sucedido en el juego para cada jugador y para los observadores del juego.

Referencias

FIXME

 
materias/laboratorio_de_lenguajes_ii/lableng2/proy20062/batallanaval.txt · Última modificación: 2011/01/24 15:30 (editor externo)
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki