Ingenious Game
Enviado por tomas • 12 de Noviembre de 2018 • 1.536 Palabras (7 Páginas) • 504 Visitas
...
Al final el algoritmo nos devolverá la jugada que debe realizar la máquina para maximizar sus posibilidades y bloquear las posibilidades del rival.
[pic 18]
[pic 19][pic 20][pic 21][pic 22]
[pic 23]
---------------------------------------------------------------
-
Implementación Aplicación
Bolsa.java
ComponenteTablero.jazva
FramePrincipal.java
FrameTablero.java
Hexagono.java
HexagonoInterfaz.java
Juego.java
Jugador.java
JugadorInterfaz.java
Tablero.java
Tile.java
TileInterfaz.java
Es importante resaltar la relevancia que presentan algunas clases, por eso se debe iniciar mencionando la clase Bolsa.java, que es la que contiene literalmente todas las fichas o tiles del juego, se apoya en la implementacion de un ArrayList y en dos ciclos for, los cuales se encargan de llenar este arreglo con las diferentes fichas del juego, que deben tener la siguiente distribucion:
[pic 24]
Entonces, un for se encarga de llenar el arreglo con las fichas del mismo color y el otro for se encarga de llenar el arreglo con las fichas combinadas, para asi llenar una bolsa completa de 120 fichas.
Ademas, en esta clase se tiene un metodo llamado dibujar y lo que hace es ir eliminando una ficha del arreglo bolsa, ya que si dibuja, se tiene que ir sacando del arreglo y por ultimo tambien es importante mezclar o barajar esa bolsa.
Ahora bien, para obtener la baraja del juego, que es parte fundamental del juego, si no, la mas importante, se implementa la clase Baraja.java para obtener una baraja con 6 fichas para el juego, teniendo en cuenta tambien la clase anterior, puesto que la baraja sale de la bolsa.
Los hexagonos son la esencia de este juego y la logica de estos se implementa en Hexagono.java. Aquí se definen las direcciones de un hexagono, fundamentales a la hora de la ejecucion del juego, las direcciones quedan definidas de la siguiente manera:
[pic 25]
DERECHA = 0;
S_DERECHA = 1;
S_IZQUIERDA = 2;
IZQUIERDA = 3;
I_IZQUIERDA = 4;
I_DERECHA = 5;
Ademas tambien se define los casos para los colores, de la siguiente manera:
case 0: return "R";
case 1: return "O";
case 2: return "Y";
case 3: return "G";
case 4: return "B";
case 5: return "P";
R=red
O=orange
Y=yellow
G=green
B=blue
P=purple
Para la implementacion del tablero, asi como de las fichas o tiles se utiliza la librería Graphics de Java y tambien Polygon, para representar las fichas, todo esto se ve reflejado en la interfaz de un hexagono, en la interfaz de un jugador y en la interfaz del tablero.
En otros aspectos, para la ejecucion del juego se tienen entonces las clases Juego.java y Jugador.java, aquí se validan las jugadas, se implementa la puntuacion, se valida en si la ejecucion del juego, un turno respectivo, un cambio de jugador, entre otras cosas.
En este orden de ideas, la ejecucion del juego se ve de la siguiente manera:
[pic 26]
Ventana principal para iniciar el juego
[pic 27]
Interfaz inicial del juego, se compone de las barajas de jugador 1 y jugador 2, el respectivo tablero, con un diametro de 11 y una longitud de lado de 6, representando un hexagono y por ultimo las puntuaciones en cada color de ficha de ambos jugadores. Aquí es importante que en la primera jugada, se debe poner una ficha en los hexagonos adayacentes a los hexagonos que son esquinas, de lo contrario no se puede colocar en otro hexagono del tablero. Todo esto es validado por Juego.java.
[pic 28]
Importante tambien la rotacion de las fichas, que tambien debe validarse en el juego, pero que previamente se definieron en la clase Hexagono.java. En este panel, la rotacion se logra gracias a un evento del mouse, de su clic.
[pic 29]
Cuando se inicia el juego, como se ve, se debe iniciar en los hexagonos adyacentes a las esquinas. Aquí ya se ve reflejado como se modifica la puntuacion para este color del jugador 1, esto se aplica para todos los colores y se valida con el hexagono, es decir, con el color que tiene ese hexagono. Se parte de definir una variable que indique el frente del hexagono, se verifican todas las direcciones para mirar su color y asi añadir la cantidad de hexagonos de ese color a la puntuacion del jugador. De esta forma se determina quien es el ganador del juego, puesto que se valida quien tiene mayor puntuacion en los colores de las fichas.
Webgrafia
Simplemente_Genial_-_REGLAS_ (documento compartido en el campus virtual)
https://devcode.la/tutoriales/algoritmo-minimax/
http://conacin.upeu.edu.pe/wp-content/uploads/2014/10/CIn_3466.pdf
http://www.itnuevolaredo.edu.mx/Takeyas/Apuntes/Inteligencia%20Artificial/Apuntes/IA/Minimax.pdf
...