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.
Construtor | Descrição |
---|---|
TicTacToeBoard | Cria um novo TicTacToeBoard com todos os quadrados em branco. |
Método | Descriçã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!