Java desafio de programação: a adição de classe para o programa de tic-tac-toe simples

Neste desafio, você melhorar o seu jogo Tic-Tac-Toe adicionando uma classe de programação Java, que permite que o programa para fazer um esforço rudimentar para estratégia ao determinar movimentos do computador.

Dentro Java Desafio Programação: A Simple Tic-Tac-Toe Jogo você está desafiado a escrever um programa para jogar o simples jogo de Tic-Tac-Toe. Neste desafio, você modificar o código-fonte para a sua solução anterior para ajudar a strategize computador.

Embora as regras do jogo são muito simples, a criação de um programa de computador que pode jogar o jogo pode ser complexa. Uma série de detalhes potencialmente complicados precisam ser incorporadas ao programa. Especificamente:

  • O programa deve ter uma forma de representar internamente o estado de cada um dos nove quadrados que compõem o tabuleiro Tic-Tac-Toe.

  • O programa deve fornecer uma maneira de registrar uma jogada para qualquer jogador, e deve assegurar que cada movimento é válido (por exemplo, um jogador não é permitido jogar em uma praça que já está ocupado por um X ou um O.

  • O programa deve ser capaz de determinar quando um dos jogadores ganhou, olhando para todos os oito possíveis combinações três-em-um-fila: As três linhas, as três colunas e as duas diagonais.

  • O programa também deve ser capaz de determinar quando o jogo é um empate - isto é, quando todos os nove quadrados foram jogados e nenhum jogador ganhou.



Ao mesmo tempo, o programa tem de gerir os detalhes da interação com o usuário, pedindo ao utilizador que introduza o seu movimento, anunciando o jogo do computador, exibindo uma representação atualizada do conselho depois de cada jogo, e declarando um vencedor ou anunciando um empate quando o jogo acabou.

Neste desafio, você está convidado a separar estes dois elementos do programa Tic-Tac-Toe: a parte do programa que gerencia o estado eo progresso do jogo e a parte do programa que lida com a interação com o usuário. Você vai fazer isso através da criação de uma classe chamada TicTacToeBoard que fornece métodos que podem ser chamados para jogar um jogo completo. Então, você está convidado a escrever um programa que usa o TicTacToeBoard classe para permitir que um oponente humano para jogar um jogo de Tic-Tac-Toe contra o computador.

Da perspectiva do usuário, este programa irá operar de forma idêntica ao programa criado para resolver o desafio simples jogo Tic-Tac-Toe, com uma diferença: Para esta versão do jogo, o programa faz um esforço rudimentar para estratégia ao determinar os movimentos do computador . O computador não jogar perfeitamente, por isso ainda é facilmente superável. Mas faz algum esforço além de simplesmente jogar no primeiro quadrado vazio que vê.

A tabela a seguir lista os métodos que os TicTacToeBoard classe deve implementar. Lembre-se, você terá de criar dois .Java arquivos para resolver este desafio. O primeiro, TicTacToeBoard.java, implementa o TicTacToeBoard classe. O segundo, chamado simplesmente TicTacToe.java, é o programa o usuário será executado para jogar um jogo de Tic-Tac-Toe contra o computador.

A classe TicTacToeBoard
ConstrutorDescrição
TicTacToeBoardCria um novo TicTacToeBoard com todos os quadrados em branco.
MétodoDescrição
void reset ()Redefine o status de cada quadrado de vazio.
int getSquare (String quadrado)Retorna o status da praça especificado pela praça, que deve ser uma das cordas A1, A2, A3, B1, B2, B3, C1, C2, ou C3. Retorna 0 se o quadrado está vazio, uma se contiver um X e 2 se ele contém um O. Lança IllegalArgumentException E se quadrado não é um dos valores admissíveis.
anular playAt (String quadrado, jogador int)Marca o quadrado especificado (A1, A2, A3, B1, B2, B3, C1, C2, ou C3) Para o jogador especificado (1 para X, para 2 O). lança IllegalArgumentException E se quadrado não é um dos valores admissíveis, jogador não é 1 ou 2, ou o quadrado especificado não está vazio.
int isGameOver ()Determina se o jogo acabou. Retorna 0 se o jogo não acabou, 1 se X ganhou o jogo, 2 se O ganhou o jogo, e 3 se o jogo é um empate. As condições fim do jogo são os seguintes:
1: Se qualquer linha, coluna ou diagonal contém todos Xs.
2: Se qualquer linha, coluna ou diagonal contém todos Os.
3: Se não houver quadrados vazios e nem X nem O ganhou.
int getNextMove ()Retorna um inteiro que representa o próximo passo para o adversário do computador. Este método deve fazer um esforço rudimentar para selecionar uma boa jogada, de acordo com a seguinte estratégia:
* Se o centro (praça B2) Está vazio, tocar o centro da praça.
* Se o centro não está vazio mas qualquer um dos quatro cantos (quadrados A1, A3, C1, ou C3) Estão vazias, jogar um dos cantos (não importa qual).
* Se o centro não está vazio e sem cantos estão vazios, jogar uma das bordas (quadrados A2, B1, B3, ou C2).
String toString ()Retorna uma string que representa o estado atual da placa. A seqüência de caracteres inclui caracteres de nova linha para exibir as linhas, bem como linhas de separação em linhas de console separadas, como neste exemplo:
O | | O
- | - | -| X | - | - | -| X |

Se você está perplexo, você pode encontrar a solução no guia Downloads do Java All-in-One For Dummies, 4ª página do produto Edition.

Boa sorte!


Publicações relacionadas