Construye un juego del Buscaminas multijugador Configuración del lado del servidor

Esta miniserie de dos partes te enseñará cómo crear un juego multijugador llamado Minesweeper Flags. En este tutorial, aprenderá cómo implementar el lado del servidor de la aplicación, la base de datos e incluso los servicios web. El siguiente tutorial le enseñará cómo implementar la interfaz de usuario, la comunicación del servidor web, el análisis de datos y la interacción. Sigue leyendo!


Bandera del Buscaminas

Minesweeper Flag es un juego de mesa multijugador que se juega entre dos oponentes. Comúnmente, se asignan azul o rojo a cada jugador. El tablero está compuesto por 256 cuadrados iguales, y cada tablero tiene 51 minas colocadas en posiciones completamente aleatorias.

El objetivo del juego es descubrir todas las casillas para encontrar 26 minas. Tocar en el tablero de juego revelará lo que está escondido debajo de la casilla elegida: una bomba o un número. Cada vez que un jugador toca un cuadrado que contiene una mina, se le otorga otro movimiento. Además, si se descubre un número, ese número representa el número de minas adyacentes al cuadrado descubierto.

Al comienzo del juego, el color del jugador se asigna automáticamente y el tablero está completamente cubierto. El jugador con el color azul siempre se mueve primero..


Vista previa del proyecto


Vista previa del efecto final

Modelo de sistema

Para simplificar los requisitos del juego y del software, a continuación se presenta un modelo gráfico de todos los requisitos. Como puede ver, la base de datos, los servicios web y las interfaces de usuario se dividen en varias capas distintas para lograr la independencia del software..


Requerimientos

Para completar el tutorial, el lector necesita los siguientes requisitos:

  • MySQL
  • Netbeans con paquetes de desarrollo web
  • Xcode con kit de desarrollo de iOS.
  • Cocos2d para iOS

Conexión de capa

los MySQL El componente puede verse como el núcleo de la aplicación, ya que apoyará directamente la persistencia del juego. Almacena todos los datos inherentes al juego Minesweeper Flag, como los movimientos de los jugadores, la ubicación de la mina y las puntuaciones..

La base de datos de Minesweeper Flag se compone para una sola tableta llamada juegos. La siguiente imagen presenta la base de datos de una manera gráfica..


Base de datos

  • La tabla de "juegos" es la tabla fundamental, ya que conserva las funciones básicas del juego. Contiene el juego y el identificador del jugador, el turno del jugador, la matriz del juego y la matriz descubierta. El campo de matriz contiene la ubicación de las minas y sus vecinos, mientras que la matriz descubierta contiene inicialmente los 256 cuadrados rellenos con un valor de 9 predeterminado. Este campo es muy importante, ya que se usará constantemente para verificar si un cuadrado dado ya se tocó y su valor. El valor 9 significa que este cuadrado simple aún no se ha tocado, mientras que los caracteres "*" "y" # "" indican que el jugador azul o rojo encontró una mina, correspondientemente.

los Netbeans El entorno de desarrollo de interfaz se utiliza para proporcionar la aplicación web y sus servicios web directos. Este tutorial se basa en la versión 7.0.1 con los servidores incluidos..


Paso 1: Iniciar una aplicación web Java


Haga clic en Archivo -> Nuevo Proyecto


Paso 2: Configurar las configuraciones del proyecto

Dale un nombre al proyecto, su ubicación y carpeta.


Paso 3: Elija el motor del servidor web

En este tutorial, los autores utilizaron el servidor Glassfish con Java EE versión 6 como estándar.


Paso 4: Saltar la opción de marco

No elija ningún marco, ya que no utilizaremos ninguna especificación o característica de ninguno de los marcos presentados..

En este punto tenemos configurado el servidor web. El siguiente paso es iniciarlo para verificar si todo está configurado correctamente..


Paso 5: Ejecutar el proyecto principal

Para ejecutar el proyecto principal puede hacer clic en el Ejecutar proyecto principal Opción, ubicada en el correr En el menú o haga clic en el icono verde en la barra de herramientas superior. Si todo está correcto, debería aparecer una página web con el mensaje "¡Hola mundo!".

Ahora es el momento de agregar la capa de servicios web al servidor web.


Paso 6: Agregar un nuevo servicio web RESTful


Haga clic derecho en el nombre del proyecto y elija Nuevo -> Otro. De las opciones del menú de la izquierda elegir Servicios web y de la lista correcta Servicio web de RESTful de patrones.


Paso 8: Seleccione un patrón

Elija la primera opción "Referencia raíz simple".


Paso 9: Configuración del servicio web

Elija un paquete de recursos y defina la ruta del contenedor raíz de todos los servicios. Además, elija el tipo MIME. Para este tutorial, los autores han seleccionado el formato de intercambio de datos JSON..


Paso 10: Configuraciones de recursos REST


Elija la última opción "Crear el adaptador de servlet REST de Jersey predeterminado en web.xml".


Paso 11: Añadir los métodos de conexión

Además, se agregaron dos métodos más para separar la capa de lógica de datos con la capa de base de datos; CreateConnection () y EndConnection (). Los siguientes fragmentos de código deberían incluirse en la clase de Java MinesweeperService.

Incluir esto en la sección de importación..

 import java.sql. *; import javax.jws. *;

Definir las siguientes propiedades de clase..

 Conexión privada conn = null; Declaración de declaración privada = nulo; privado ResultSet resultSet = null; // Los autores usaron el puerto 8889 MySQL en un host localhost. // Cambiarlo en consecuencia. cadena final privada url = "jdbc: mysql: // localhost: 8889 /"; Private final String dbName = "minesweeper"; controlador de cadena final privado = "com.mysql.jdbc.Driver"; privado final String userName = "root"; Contraseña de cadena final privada = "root";

Copia y pega los siguientes métodos web..

 private Boolean CreateConnection () try Class.forName (driver) .newInstance (); conn = DriverManager.getConnection (url + dbName, userName, password); devuelve verdadero  catch (Exception e) return false;  private Boolean EndConnection () try if (resultSet! = null) resultSet = null; if (statement! = null) statement.close (); if (conn! = null) conn.close ();  catch (Exception e) return false;  devuelve true;  @WebMethod (operationName = "authentication") autenticación pública de cadena (@WebParam (name = "email") correo electrónico de cadena, @WebParam (name = "password") String pw) CreateConnection (); String query = "SELECT * FROM players WHERE + email +" "y + pw +" ";"; try statement = (Statement) conn.createStatement (); resultSet = statement.executeQuery (consulta); if (resultSet.next ()) EndConnection (); devuelve "1";  else EndConnection (); devuelve "0";  catch (Exception ex) EndConnection (); devuelve "0"; 

Paso 12: Añadir el JAR MySQL externo

Como es necesario realizar una conexión a la base de datos MySQL, es necesaria una biblioteca externa de MySQL. Para agregarlo al proyecto, haga clic con el botón derecho en el nombre del proyecto y vaya a la Propiedades opciones Entonces escoge Bibliotecas y haga clic en Agregar JAR / carpeta.


Paso 13: Pruebas de servicio web

En el proyecto principal, haga clic en la carpeta de servicios web y, con el segundo botón del mouse, haga clic en el objeto MinesweeperService y elija la opción Pruebe los servicios web RESTful opción.


Paso 14: Seleccionar objetivo de archivo de prueba

Deje la primera opción seleccionada: "Cliente de prueba generado localmente".

En este punto, debe tener una aplicación del lado del servidor que admita la conexión con una base de datos, la comunicación con los servidores web y los métodos web inherentes para la interacción del juego..

Todas las operaciones relacionadas con el juego se pueden realizar utilizando el Paso 12, aunque no es fácil de usar.


La próxima vez

En la segunda y última entrega de esta serie, explicaremos cómo crear una aplicación nativa de iOS del lado del cliente que se conectará y consumirá los datos del servidor web. Estén atentos para la parte 2!