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!
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..
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..
Para completar el tutorial, el lector necesita los siguientes requisitos:
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..
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..
Haga clic en Archivo -> Nuevo Proyecto
Dale un nombre al proyecto, su ubicación y carpeta.
En este tutorial, los autores utilizaron el servidor Glassfish con Java EE versión 6 como estándar.
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..
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.
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.
Elija la primera opción "Referencia raíz simple".
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..
Elija la última opción "Crear el adaptador de servlet REST de Jersey predeterminado en web.xml".
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";
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.
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.
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.
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!