Lar Finanças Pessoais Desafio de programação java: adicionando classe ao programa Tic-Tac-Toe simples

Desafio de programação java: adicionando classe ao programa Tic-Tac-Toe simples

Vídeo: 1.1: Code! Programming for Beginners with p5.js 2024

Vídeo: 1.1: Code! Programming for Beginners with p5.js 2024
Anonim

Neste desafio, você melhora o seu jogo Tic-Tac-Toe, adicionando uma aula de programação Java, que permite ao programa fazer um esforço rudimentar em direção à estratégia ao determinar o computador se move.

No Java Programming Challenge: um jogo Tic-Tac-Toe simples, você é desafiado a escrever um programa para jogar o jogo simples do Tic-Tac-Toe. Neste desafio, você modifica o código-fonte da sua solução anterior para ajudar o computador a elaborar estratégias.

Embora as regras do jogo sejam muito simples, criar um programa de computador que pode jogar o jogo pode ser complexo. Uma série de detalhes potencialmente complicados precisam ser incorporados no programa. Especificamente:

  • O programa deve ter uma maneira de representar internamente o status de cada um dos nove quadrados que compõem a placa Tic-Tac-Toe.

  • O programa deve fornecer uma maneira de registrar um movimento para qualquer jogador e deve garantir que cada movimento seja válido (por exemplo, um jogador não pode jogar em um quadrado que já está ocupado por um X ou um O.

  • O programa deve ser capaz de determinar quando um dos jogadores ganhou olhando todas as oito das possíveis combinações três em uma linha: 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 sorteio - isto é, quando os nove quadrados foram jogados e nenhum dos dois jogadores ganhou.

Ao mesmo tempo, o programa tem que gerenciar os detalhes de interagir com o usuário perguntando ao usuário para inserir o movimento dele, anunciando o jogo do computador, exibindo uma representação atualizada da placa após cada jogo e declarando um vencedor ou anunciando um sorteio quando o jogo terminar.

Neste desafio, você é convidado a separar esses dois elementos do programa Tic-Tac-Toe: a parte do e programa que administra o status e o progresso do jogo e a parte do programa que gerencia a interação com o usuário. Você fará isso criando uma classe chamada TicTacToeBoard, que fornece métodos que podem ser chamados para jogar um jogo completo. Então, você é convidado a escrever um programa que usa a classe TicTacToeBoard para permitir que um oponente humano jogue um jogo de Tic-Tac-Toe contra o computador.

Do ponto de vista do usuário, este programa funcionará de forma idêntica ao programa criado para resolver o desafio do jogo Tic-Tac-Toe simples, com uma diferença: para esta versão do jogo, o programa faz um esforço rudimentar em direção à estratégia ao determinar os movimentos da informática.O computador não funciona perfeitamente, então ainda é facilmente acessível. Mas faz algum esforço além de jogar simplesmente na primeira praça vazia que vê.

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

A TicTacToeBoard Class
Construtor Descrição
TicTacToeBoard Cria um novo TicTacToeBoard com todos os quadrados vazios.
Método Descrição
void reset () Repor o status de cada quadrado para esvaziar.
int getSquare (String square) Retorna o status do quadrado especificado pelo quadrado, que deve ser uma das cadeias A1, A2, A3, B1, B2, B3, C1, C2 ou C3. Retorna 0 se o quadrado estiver vazio, 1 se contiver um X e 2 se contiver um O. Lança IllegalArgumentException se o quadrado não for um dos valores permitidos.
void playAt (String square, int player) Marca o quadrado especificado (A1, A2, A3, B1, B2, B3, C1, C2 ou C3) para o jogador especificado (1 para X, 2 para O). Lança IllegalArgumentException se o quadrado não for um dos valores permitidos, o 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 terminar, 1 se X ganhou o jogo, 2 se O ganhou o jogo e 3 se o jogo for um sorteio. As condições de término do jogo são as seguintes:

1: Se qualquer linha, coluna ou diagonal contém todos os Xs.

2: Se qualquer linha, coluna ou diagonal contém todos os Os.

3: se não houver quadrados vazios e nem X nem O ganharam.

int getNextMove () Retorna um número inteiro que representa o próximo movimento para o oponente do computador. Este método deve fazer um esforço rudimentar para selecionar um bom movimento, de acordo com a seguinte estratégia:

* Se o centro (quadrado B2) estiver vazio, jogue o quadrado central.

* Se o centro não estiver vazio, mas qualquer um dos quatro cantos (quadrados A1, A3, C1 ou C3) está vazio, toque um dos cantos (não importa qual).

* Se o centro não estiver vazio e nenhum canto estiver vazio, toque uma das arestas (quadrados A2, B1, B3 ou C2).

String toString () Retorna uma string que representa o status atual da placa. A seqüência de caracteres inclui caracteres de nova linha para exibir as linhas, bem como linhas separadoras em linhas de console separadas, como neste exemplo:

O | | O

- | - | -

| X |

- | - | -

| X |

Se você estiver perplexo, você pode encontrar a solução na guia Downloads da página de produtos Java All-in-One For Dummies, 4th Edition.

Boa sorte!

Desafio de programação java: adicionando classe ao programa Tic-Tac-Toe simples

Escolha dos editores

Acalma suas emoções ao praticar Mindfulness - dummies

Acalma suas emoções ao praticar Mindfulness - dummies

Aqui, você descobre a maneira consciente de gerenciar as emoções - as etapas para tome quando estiver sentindo baixo, excessivamente irritado ou desconfortavelmente ansioso. As emoções positivas podem ser um sentimento maravilhoso. A alegria, a alegria, a emoção e a felicidade são perfeitas. Mas como você pode lidar com as chamadas emoções negativas? Use a atenção para a saúde emocional A atenção plena está se tornando ...

Como começar o seu dia de trabalho com meditação Mindfulness - dummies

Como começar o seu dia de trabalho com meditação Mindfulness - dummies

Você pode encontrar a meditação mindfulness é uma ótima maneira de Comece o seu dia de trabalho. Quando chegar ao trabalho pela manhã, talvez já esteja estressado. Depois de uma agitada hora ou duas preparando as crianças para a escola ou regatear com seu parceiro ou lidar com alguma emergência em casa, seguido de ...

Os melhores sites Mindfulness - dummies

Os melhores sites Mindfulness - dummies

, Independentemente de você morar no Reino Unido ou em outro lugar, se você procurar "mindfulness" 'on-line, você literalmente obterá milhões de resultados. Como você pode dizer o trigo da palha? Aqui estão alguns sites que você achará útil. Atento. Este recurso maravilhoso tem muitos conteúdos de alta qualidade de professores excelentes de atenção plena. O ...

Escolha dos editores

HDR Solução de problemas: Nada está funcionando - manequins

HDR Solução de problemas: Nada está funcionando - manequins

Quando você se depara com uma situação com suas fotografias de alcance dinâmico elevado e parece que nada que você está fazendo está funcionando - as configurações não parecem boas, a imagem parece errada, os efeitos são ruins - relaxe e faça uma pausa. A imagem está lhe dizendo algo. Que algo às vezes é relacionado a forçar ...

HDR Resolução de problemas: falta de imaginação - dummies

HDR Resolução de problemas: falta de imaginação - dummies

A imaginação é uma coisa poderosa ao preparar imagens HDR, fato que é tornou-se mais óbvio quando você vê o resultado de não usá-lo versus usá-lo. A imagem superior desta figura é uma imagem HDR de um diner local durante a "hora dourada" - naquele horário atrasado (ou manhã) quando ...

HDR Solução de problemas: Sharpening - dummies

HDR Solução de problemas: Sharpening - dummies

Se você ficar apanhado na perfeição, você está preparado para aumentar seu HDR imagens. Os fotógrafos às vezes estão obcecados com a nitidez em suas fotos. Eles querem que tudo seja pixelly perfeitamente afiado do nariz da câmera até o infinito, independentemente da lente, abertura, ISO ou velocidade do obturador que eles usem. Esta figura mostra os resultados ...

Escolha dos editores

Cisco Rede: Mostrar comando de versão em um Switch - dummies

Cisco Rede: Mostrar comando de versão em um Switch - dummies

Em qualquer componente de rede da Cisco, o show O comando de versão é aplicável a qualquer hardware usando o Sistema Operacional Cisco IET (Internetwork Operating System), incluindo switches. O comando show version mostra informações ligeiramente diferentes, de acordo com o tipo de dispositivo em que você usa. Veja a saída do comando show version em um switch e ...

Cisco Rede: Modo de operação EXEC privilegiado - manequins

Cisco Rede: Modo de operação EXEC privilegiado - manequins

Você precisa usar o modo EXEC privilegiado se quiser realmente tem acesso de atualização a um sistema de rede Cisco,. Para entrar neste modo no modo EXEC do usuário, emita o comando enable, que solicita uma senha, se configurado. Como o nome do modo sugere, este modo tem privilégios extras para permitir ...

Cisco Rede: Configuração de Senha de Shell Seguro (SSH) - manequins

Cisco Rede: Configuração de Senha de Shell Seguro (SSH) - manequins

Shell seguro (SSH) é um protocolo de rede para seus dispositivos Cisco, que é mais seguro do que o Telenet. Definir uma senha segura é um requisito de configuração para este protocolo. Para configurar o acesso a um switch Cisco para SSH, você precisará ter uma conta de usuário criada em sua opção. O exemplo supõe que você tenha ...