Desafio de programação Java: Adicionando classe ao Tic-Tac-Toe Programa 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 a 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. Um número de detalhes potencialmente complicados precisa de ser incorporado no programa. Especificamente:

  • O programa deve ter uma forma de representar internamente o estado de cada um dos nove quadrados que compõem a bordo 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 um quadrado que já está ocupado por um X ou um O.

  • O programa deve ser capaz de determinar quando um jogador 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 de interagir com o usuário, solicitando que o usuário insira o seu movimento, anunciando o jogo do computador, exibindo uma representação atualizada do conselho depois de cada jogo, e declarar 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 adversário humano para jogar um jogo do 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 a 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 do 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 para vazio.
int getSquare (String quadrado)Retorna o status da praça especificado pelo quadrado, o que deve ser uma das cordas A1, A2, A3, B1, B2, B3, C1, C2, ou C3. Retorna 0 se a praça está vazia, 1 se ele contém 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 permitidos, jogador não é 1 ou 2, ou a praça 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 alguma linha, coluna ou diagonal contém todas Xs.
2: Se alguma linha, coluna ou diagonal contém todos os sistemas operacionais.
3: Se não há casas vazias e nem X nem ó 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 quadrado central.
* Se o centro não está vazia, 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á vazia e sem cantos estão vazios, desempenham um dos bordos (quadrados A2, B1, B3, ou C2).
toString String ()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!

menu