Desarrollando un Juego de BlackJack usando Java WebSocket y AngularJS

¿Qué es un WebSocket?

Un WebSocket es una aplicación asíncrona, de mensajería bidireccional a través de una única conexión TCP permitiendo una comunicación en ambas direcciones simultáneamente. Este protocolo aprovecha una actualización de la cabecera HTTP, con los WebSockets de HTML5 podemos crear aplicaciones en tiempo real con una arquitectura muy sencilla.

Algunos de los posibles usos de WebSocket son:

  • Aplicaciones de chat
  • Juegos
  • El comercio de acciones o de las aplicaciones financieras
  • Edición de documentos de colaboración
  • Aplicaciones de redes sociales

Desarrollo de un Juego de BlackJack usando Java WebSockets y AngularJS

Ahora vamos a poner a prueba los Sockets desarrollando una juego de cartas muy conocido usando la tecnología Java JSR 356, AngularJS y Maven.

Lo primero es crear una clase que represente una carta:

Los tipos de cartas y los valores los voy a colocar en un Enum:

Ahora creamos una la clase que contenedora de cartas o un Maso este representa las 52 cartas del Juego:

En el constructor se inicia el maso con 52 cartas y se barajan usando colecciones de Java.

Al jugador lo vamos a representar con la clase Player:

Una mano o una partida la vamos a representar con la Clase Hand

En esta clase tenemos los siguientes métodos:

  • addCard, con este método el jugador recibe una carta.
  • isBlackjack, este método verificar si el jugador tiene 21 puntos
  • isGameOver, este método valida que aun no se ha pasado de los 21 puntos

Ahora vamos a desarrollar una clase con la lógica del Juego:

Hasta este punto solo hemos realizado la lógica del juego, ahora vamos a comenzar a implementar el socket.

La clase SocketMessage representa el formato del mensaje con el cual vamos ha realizar la comunicación cliente – servidor.

La clase WebSocketsDispatcher será la encarga de despachar los mensajes a todos los clientes conectados al socket.

La clase ServerEndpoint crea un punto de acceso usando la especificación de Java JSR 356

Ya tenemos listo el socket del lado del servidor, ahora vamos a desarrollar el cliente web usando AngularJS.

El archivo services.js inicia el servicio del lado del cliente usando AngularJS y WebSockets de JavaScript

Podemos ver como se implementa el metodo sendMessage que enviara los mensajes al socket y la implantación de los métodos escuchadores de WebSockets, donde podemos resaltar el método onmessage que traduce los mensajes enviados desde el servidor y son enviados a toda la aplicación usando  $rootScope.$broadcast de AngularJS.

El archivo constants.js creamos la variable WSS_SOCKET con el URI del Socket

El fichero mainController.js

Vamos a crear una interfaz muy simple en HTML,

Como vemos ya tenemos una aplicación en tiempo real usando Java WebSocket y AngularJS

Si lo quieres ver en funcionamiento:

https://wss.araguaneybits.com:8443/blackjack21

Para descargar el código completo:

https://github.com/jestevez/blackjack21

Ya tenemos un juego de Jackblack un poco Básico nos falta implementar la función SPLIT, aplicar saldos y puntos entre otras cosas. Si quieres colaborar o mejorar el código eres bienvenido.

 

 

Comments are closed.