Accueil Finances personnelles Défi de programmation java: Ajouter une classe au programme Simple Tic-Tac-Toe

Défi de programmation java: Ajouter une classe au programme Simple Tic-Tac-Toe

Vidéo: Coding Challenge #3: The Snake Game 2025

Vidéo: Coding Challenge #3: The Snake Game 2025
Anonim

Dans ce défi, vous améliorez votre jeu Tic-Tac-Toe en ajoutant une classe de programmation Java, ce qui permet au programme de faire un effort rudimentaire vers la stratégie se déplace.

Dans Java Programming Challenge: Un jeu simple de Tic-Tac-Toe, vous êtes mis au défi d'écrire un programme pour jouer au jeu simple de Tic-Tac-Toe. Dans ce défi, vous modifiez le code source de votre solution précédente pour aider l'ordinateur à élaborer des stratégies.

Bien que les règles du jeu soient très simples, créer un programme informatique capable de jouer au jeu peut être complexe. Un certain nombre de détails potentiellement compliqués doivent être incorporés dans le programme. Plus précisément:

  • Le programme doit avoir un moyen de représenter en interne le statut de chacun des neuf carrés qui composent le tableau Tic-Tac-Toe.

  • Le programme doit fournir un moyen d'enregistrer un coup pour chaque joueur, et doit s'assurer que chaque coup est valide (par exemple, un joueur n'est pas autorisé à jouer dans un carré déjà occupé par un X ou un O.

  • Le programme doit pouvoir déterminer si l'un des deux joueurs a gagné en regardant les huit combinaisons possibles de trois en une: Les trois lignes, les trois colonnes et les deux diagonales.

  • Le programme doit également être capable de déterminer quand le jeu est un match nul, c'est-à-dire quand les neuf cases ont été jouées et qu'aucun des deux joueurs n'a gagné.

En même temps, le programme doit gérer les détails de l'interaction avec l'utilisateur en demandant à l'utilisateur d'entrer dans son mouvement, d'annoncer le jeu de l'ordinateur, d'afficher une représentation mise à jour du tableau après chaque jeu et de déclarer un gagnant ou d'annoncer un tirage lorsque le jeu est terminé.

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

Du point de vue de l'utilisateur, ce programme fonctionnera de manière identique au programme créé pour résoudre le défi du jeu Tic-Tac-Toe, avec une différence: Pour cette version du jeu, le programme fait un effort rudimentaire pour déterminer les mouvements de l'ordinateur.L'ordinateur ne joue pas parfaitement, il est donc toujours facile à battre. Mais il fait un effort au-delà de simplement jouer dans le premier carré vide qu'il voit.

Le tableau suivant répertorie les méthodes que la classe TicTacToeBoard doit implémenter. Rappelez-vous, vous devrez en créer deux. fichiers Java pour résoudre ce problème. Le premier, TicTacToeBoard. java, implémente la classe TicTacToeBoard. Le second, nommé simplement TicTacToe. java, est le programme que l'utilisateur exécutera pour jouer à un jeu de Tic-Tac-Toe contre l'ordinateur.

Le TicTacToeBoard Class
Constructeur Description
TicTacToeBoard Crée un nouveau TicTacToeBoard avec tous les carrés vides.
Méthode Description
void reset () Réinitialise l'état de chaque carré à vider.
int getSquare (String square) Renvoie l'état du carré spécifié par square, qui doit être l'une des chaînes A1, A2, A3, B1, B2, B3, C1, C2 ou C3. Renvoie 0 si le carré est vide, 1 s'il contient un X et 2 s'il contient un O. Lève IllegalArgumentException si le carré n'est pas l'une des valeurs autorisées.
void playAt (Chaîne carrée, int joueur) Marque le carré spécifié (A1, A2, A3, B1, B2, B3, C1, C2 ou C3) pour le joueur spécifié (1 pour X, 2 pour O). Lance IllegalArgumentException si square n'est pas une des valeurs autorisées, le joueur n'est pas 1 ou 2, ou le carré spécifié n'est pas vide.
int isGameOver () Détermine si la partie est terminée. Renvoie 0 si la partie n'est pas terminée, 1 si X a gagné la partie, 2 si O a gagné la partie, et 3 si la partie est nulle. Les conditions de fin de jeu sont les suivantes:

1: si une ligne, une colonne ou une diagonale contient tous les X.

2: Si une ligne, une colonne ou une diagonale contient tous les Os.

3: S'il n'y a pas de cases vides et que ni X ni O n'ont gagné.

int getNextMove () Retourne un entier représentant le coup suivant pour l'adversaire de l'ordinateur. Cette méthode devrait faire un effort rudimentaire pour sélectionner un bon coup, selon la stratégie suivante:

* Si le centre (carré B2) est vide, jouez le carré central.

* Si le centre n'est pas vide mais que l'un des quatre coins (carrés A1, A3, C1 ou C3) est vide, jouez un des coins (peu importe lequel).

* Si le centre n'est pas vide et qu'aucun coin n'est vide, lisez l'un des bords (carrés A2, B1, B3 ou C2).

String toString () Renvoie une chaîne représentant l'état actuel du tableau. La chaîne inclut des caractères de nouvelle ligne pour afficher les lignes, ainsi que des lignes de séparation sur des lignes de console distinctes, comme dans cet exemple:

O | | O

- | - | -

| X |

- | - | -

| X |

Si vous êtes perplexe, vous pouvez trouver la solution dans l'onglet Téléchargements de la page du produit Java Tout-en-un pour les nuls, 4e édition.

Bonne chance!

Défi de programmation java: Ajouter une classe au programme Simple Tic-Tac-Toe

Le choix des éditeurs

Principes de base du protocole de routage IP Multicast - dummies

Principes de base du protocole de routage IP Multicast - dummies

IP Le routage multicast est le routage du trafic multicast. La nature des données IP Multicast est telle qu'elle a ses propres problèmes de routage de réseau Cisco. Il existe quatre protocoles de multidiffusion principaux pris en charge par le Cisco IOS actuel. L'illustration vous montre approximativement où les protocoles sont utilisés; Ce qui suit est ...

Comment le protocole STP (Spanning Tree Protocol) gère les modifications du réseau - dummies

Comment le protocole STP (Spanning Tree Protocol) gère les modifications du réseau - dummies

Nouveau concentrateur ou passer à un réseau mappé STP (Spanning Tree Protocol)? Pour cet exemple, un concentrateur était connecté à un port sur les deux commutateurs 11: 99 et 77: 22. Un concentrateur était utilisé car il ne disposait pas d'une intelligence réseau. L'effet net est en fait le même que ...

Types de réseau local (LAN) - nuls

Types de réseau local (LAN) - nuls

Un WAN est un type de réseau local (LAN) . Un réseau local est un réseau privé généralement constitué d'une connexion réseau fiable, rapide et bien connectée. Les alternatives sur le framework LAN incluent CAN, MAN et WAN. Ces trois options de réseau sont illustrées ci-dessous: CAN Si vous utilisez le réseau LAN ...

Le choix des éditeurs

Bebo est l'application de médias sociaux pour vous? - les nuls

Bebo est l'application de médias sociaux pour vous? - les nuls

Comment savez-vous quel est le bon média social pour vous? La culture moderne devient de plus en plus dépendante des médias sociaux tels que Bebo, Facebook, Twitter et What'sApp, ainsi que de nombreux autres. Le questionnaire suivant vous aidera à déterminer si vous avez ou non ce qu'il faut pour être social sur le nouveau ...

Comment utiliser Bebo - dummies

Comment utiliser Bebo - dummies

Bebo, la nouvelle application des médias sociaux, est aussi facile à utiliser que C'est amusant à regarder. Vous pouvez obtenir cette nouvelle application sur Google Play Store et Apple App Store. Lancez Bebo et suivez les instructions à l'écran pour terminer le processus de création de compte. Après avoir téléchargé avec succès, ...

Le choix des éditeurs

Ce que vous pouvez trouver dans une barre latérale de blog - des mannequins

Ce que vous pouvez trouver dans une barre latérale de blog - des mannequins

La plupart des blogs contiennent du matériel de barre latérale. La plupart des blogs sont disposés en deux ou trois colonnes, et le contenu de la barre latérale apparaît généralement dans les deuxième et / ou troisième colonnes. Certains blogs n'ont pas de barres latérales, et sur d'autres blogs, vous pouvez découvrir des éléments supplémentaires au-delà de ce que vous voyez ici. Archives basées sur la date: Presque tous les blogs sont ...

Lorsqu'un réseau publicitaire est approprié pour votre blog maman - les mannequins

Lorsqu'un réseau publicitaire est approprié pour votre blog maman - les mannequins

Ne sont que quelques-unes modèles conflit en cours d'exécution des publicités avec vos meilleurs intérêts. C'est quand vous bloguez pour vendre vos propres produits ou pour promouvoir vos services professionnels. Même dans ce cas, il est toujours possible de diffuser des annonces sur ces blogs, surtout si les annonces font la promotion de produits et de services complémentaires et non concurrents. Mais si vous êtes ...

Quand maman blogue pour Swag is Okay - les mannequins

Quand maman blogue pour Swag is Okay - les mannequins

Dans certaines circonstances légitimes vous pouvez vous sentir travailler gratuitement vaut votre temps et la publicité que vous offrez à une marque. Cela peut être comparé à un stage non rémunéré. Si vous êtes stagiaire et que vous avez une excellente expérience de travail, alors c'est une entreprise précieuse. Si vous êtes stagiaire et que vous ne versez que du café et que vous livrez ...