Défi de programmation Java: l'ajout de classe pour le programme de tic-tac-toe simples

Dans ce défi, vous améliorez votre jeu Tic-Tac-Toe en ajoutant une classe de programmation Java, qui permet au programme de faire un effort rudimentaire vers la stratégie au moment de déterminer les mouvements de l'ordinateur.

Dans Programmation Java Défi: Un Tic-Tac-Toe Jeu Simple vous êtes mis au défi d'écrire un programme pour jouer le simple jeu de Tic-Tac-Toe. Dans ce défi, vous modifiez le code source de votre solution précédente pour aider le Strategize informatique.

Bien que les règles du jeu sont très simples, la création d'un programme d'ordinateur qui peut jouer le jeu peut être complexe. Un certain nombre de détails potentiellement complexes doivent être intégrées dans le programme. Plus précisément:

  • Le programme doit avoir une façon de représenter intérieurement le statut de chacun des neuf carrés qui composent le conseil d'administration de Tic-Tac-Toe.




  • Le programme doit fournir un moyen d'enregistrer un mouvement pour le joueur, et doit veiller à ce que chaque déménagement est valable (par exemple, un joueur n'a pas le droit de jouer dans un carré qui est déjà occupé par un X ou un O.

  • Le programme doit être en mesure de déterminer quand un des joueurs a gagné en regardant les huit combinaisons possibles de trois-en-a-row: Les trois rangées, les trois colonnes, et les deux diagonales.

  • Le programme doit également être en mesure de déterminer quand le jeu est un match nul - qui est, quand tous les neuf carrés ont été joué et aucun joueur a gagné.

Dans le même temps, le programme doit gérer les détails de l'interaction avec l'utilisateur en demandant à l'utilisateur d'entrer son mouvement, annonçant le jeu de l'ordinateur, l'affichage d'une représentation actualisée de la carte après chaque jeu, et de déclarer un gagnant ou annonçant un tirage au sort lorsque le jeu est terminé.

Dans ce défi, vous êtes invité à séparer ces deux éléments du programme Tic-Tac-Toe: la partie du programme qui gère l'état d'avancement du jeu et la partie du programme qui gère l'interaction avec l'utilisateur. Vous ferez cela en créant une classe nommée TicTacToeBoard qui fournit des méthodes qui peuvent être appelées à jouer un match complet. Ensuite, vous êtes invité à écrire un programme qui utilise le TicTacToeBoard classe pour permettre à un adversaire humain à jouer un jeu de Tic-Tac-Toe contre l'ordinateur.

Du point de vue de l'utilisateur, ce programme fonctionne de manière identique au programme créé pour résoudre le jeu défi Tic-Tac-Toe simple, avec une différence: Pour cette version du jeu, le programme fait un effort rudimentaire vers la stratégie au moment de déterminer les mouvements de l'ordinateur . L'ordinateur ne joue pas parfaitement, il est donc encore facilement battable. Mais cela fait un certain effort au-delà de simplement jouer dans la première case vide qu'il voit.

Le tableau ci-dessous répertorie les méthodes que les TicTacToeBoard classe doit mettre en œuvre. Rappelez-vous, vous aurez besoin pour créer deux .café fichiers pour résoudre ce défi. La première, TicTacToeBoard.java, met en œuvre la TicTacToeBoard classe. Le second, nommé tout simplement TicTacToe.java, est le programme, l'utilisateur se déroulera à jouer un jeu de Tic-Tac-Toe contre l'ordinateur.

La classe TicTacToeBoard
ConstructeurDescription
TicTacToeBoardCrée un nouveau TicTacToeBoard avec toutes les cases vides.
MéthodeDescription
void reset ()Réinitialise le statut de chaque carré à vide.
int getSquare (place String)Renvoie l'état de la place indiquée par carré, qui doit être l'une des chaînes A1, A2, A3, B1, B2, B3, C1, C2, ou C3. Retourne 0 si la place est vide, 1 si elle contient un X, et 2 si elle contient une O. Jetés IllegalArgumentException si carré ne fait pas partie des valeurs admissibles.
annuler playat (carré String, lecteur int)Marque la place indiquée (A1, A2, A3, B1, B2, B3, C1, C2, ou C3) Pour le joueur spécifié (1 pour X, 2 O). Lance IllegalArgumentException si carré ne fait pas partie des valeurs admissibles, joueur est pas 1 ou 2, ou sur la place spécifiée est pas vide.
int isGameOver ()Détermine si le jeu est terminé. Retourne 0 si le jeu est pas fini, 1 si X a gagné la partie, 2 si O a gagné le jeu, et 3 si le jeu est un match nul. Les conditions de jeu fin sont les suivantes:
1: Si une ligne, une colonne ou diagonale contient tous les Xs.
2: Si une ligne, une colonne ou diagonale contient tous les OS.
3: Si il n'y a pas des cases vides et ni X ni O a gagné.
int getNextMove ()Renvoie un entier représentant le prochain mouvement de l'adversaire d'ordinateur. Cette méthode devrait faire un effort rudimentaire pour sélectionner un bon mouvement, selon la stratégie suivante:
* Si le centre (place B2) Est vide, jouer le carré central.
* Si le centre ne soit pas vide, mais aucun des quatre coins carrés ( A1, A3, C1, ou C3) Sont vides, jouer l'un des coins (il n'a pas d'importance).
* Si le centre est pas vide et pas de coins sont vides, jouer l'un des bords (carrés A2, B1, B3, ou C2).
String toString ()Retourne une chaîne qui représente l'état actuel de la carte. La chaîne comprend des caractères de nouvelle ligne pour afficher les lignes, ainsi que les lignes de séparation sur les lignes de la console séparées, comme dans cet exemple:
O | | O
---| --- | ---
| X |
---| --- | ---
| X |

Si vous êtes perplexe, vous pouvez trouver la solution sur la Téléchargements onglet du Java All-in-One For Dummies, 4ème page de produits d'édition.

Bon chance!


» » » » Défi de programmation Java: l'ajout de classe pour le programme de tic-tac-toe simples