Desafío de programación Java: la adición de clase para el programa de tic-tac-toe sencilla

En este desafío, a mejorar su juego Tic-Tac-Toe añadiendo una clase de programación Java, que permite que el programa para hacer un esfuerzo rudimentario hacia la estrategia para determinar movimientos de la computadora.

En Java Programming Challenge: A Simple Tic-Tac-Toe juego que está el reto de escribir un programa para jugar el simple juego de Tic-Tac-Toe. En este desafío, modificar el código fuente de su solución anterior para ayudar al strategize ordenador.

Aunque las reglas del juego son muy simples, la creación de un programa de ordenador que puede jugar el juego puede ser complejo. Una serie de datos potencialmente complicados necesita ser incorporado en el programa. En concreto:

  • El programa debe tener una forma de representar internamente el estado de cada uno de los nueve cuadrados que componen la junta de Tic-Tac-Toe.


  • El programa debe proporcionar una manera de registrar un movimiento para cualquier jugador, y debe asegurarse de que cada movimiento es válido (por ejemplo, un jugador no se le permite jugar en una plaza que ya está ocupada por una X o un O.

  • El programa debe ser capaz de determinar si alguno de los jugadores ha ganado examinado los ocho posibles combinaciones de tres en raya: Los tres filas, las tres columnas y las dos diagonales.

  • El programa también debe ser capaz de determinar el momento en que el juego es un empate - es decir, cuando todos los nueve cuadrados se han jugado y ningún jugador ha ganado.

Al mismo tiempo, el programa tiene que gestionar los detalles de la interacción con el usuario, pidiendo al usuario que introduzca su movimiento, anunciando el juego del equipo, mostrando una representación actualizada de la junta después de cada juego, y declarar un ganador o anunciando empate cuando el juego ha terminado.

En este desafío, se le pedirá que separar estos dos elementos del programa Tic-Tac-Toe: la parte del programa que administra el estado y el progreso del juego y de la parte del programa que se encarga de la interacción con el usuario. Va a hacer eso mediante la creación de una clase llamada TicTacToeBoard que proporciona métodos que pueden ser llamados a jugar un partido completo. Luego, se le pide que escriba un programa que utiliza el TicTacToeBoard clase para permitir un oponente humano para jugar un juego de Tic-Tac-Toe contra el ordenador.


Desde la perspectiva del usuario, este programa funcionará de forma idéntica al programa creado para resolver el simple Tic-Tac-Toe desafío juego, con una diferencia: Para esta versión del juego, el programa hace un esfuerzo rudimentario hacia la estrategia para determinar movimientos de la computadora . El equipo no juega a la perfección, por lo que es todavía fácilmente vencible. Pero sí hacer un esfuerzo más allá de simplemente jugar en la primera casilla vacía que ve.

La siguiente tabla muestra los métodos que los TicTacToeBoard clase debe implementar. Recuerde, usted tendrá que crear de dos .java archivos para resolver este desafío. El primero, TicTacToeBoard.java, implementa el TicTacToeBoard clase. El segundo, llamado simplemente TicTacToe.java, es el programa que el usuario se ejecutará a jugar un juego de Tic-Tac-Toe contra el ordenador.

La Clase TicTacToeBoard
ConstructorDescripción
TicTacToeBoardCrea un nuevo TicTacToeBoard con todos los cuadrados vacíos.
ProcedimientoDescripción
void reset ()Restablece el estado de cada plaza de vacío.
int getSquare (plaza String)Devuelve el estado de la plaza especificada por plaza, que debe ser una de las cuerdas A1, A2, A3, B1, B2, B3, C1, C2, o C3. Devuelve 0 si la casilla está vacía, 1 si contiene una X, y 2 si contiene lanza una O. IllegalArgumentException si cuadrado no es uno de los valores permisibles.
anular playAt (plaza String, int jugador)Marca el cuadrado especificado (A1, A2, A3, B1, B2, B3, C1, C2, o C3) Para el jugador especificado (1 de X, 2 para O). Lanza IllegalArgumentException si cuadrado No es uno de los valores permitidos, reproductor no es 1 o 2, o la plaza especificada no está vacía.
int isGameOver ()Determina si el juego ha terminado. Devuelve 0 si el juego no ha terminado, 1 si X ha ganado la partida, 2 si O ha ganado la partida, y 3 si el juego es un empate. Las condiciones de juego fin son los siguientes:
1: Si cualquier fila, columna o diagonal contiene toda Xs.
2: Si cualquier fila, columna o diagonal contiene todos los sistemas operativos.
3: Si no hay plazas vacías y ni X ni O ha ganado.
int getNextMove ()Devuelve un entero que representa el próximo paso para el opositor de la computadora. Este método debe hacer un esfuerzo rudimentario para seleccionar un buen movimiento, de acuerdo con la siguiente estrategia:
* Si el centro (plaza B2) Está vacía, el juego de la plaza central.
* Si el centro no está vacío pero cualquiera de las cuatro esquinas (cuadrados A1, A3, C1, o C3) Están vacías, jugar una de las esquinas (no importa cuál).
* Si el centro no está vacío y no hay esquinas están vacías, jugar a uno de los bordes (cuadrados A2, B1, B3, o C2).
String toString ()Devuelve una cadena que representa el estado actual de la junta directiva. La cadena incluye caracteres de nueva línea para mostrar las filas, así como líneas de separación de las líneas de consola por separado, como en este ejemplo:
O | | O
---| --- | ---
| X |
---| --- | ---
| X |

Si no tienes ni idea, se puede encontrar la solución en el Descargas pestaña de El Java All-in-One For Dummies, Página cuarto producto Edition.

¡Buena suerte!




» » » » Desafío de programación Java: la adición de clase para el programa de tic-tac-toe sencilla