Vídeo: Coding Challenge #4: Purple Rain in Processing 2024
No Java Programming Challenge: um jogo Tic-Tac-Toe simples, você foi desafiado a escrever um programa baseado em console que joga o jogo simples do Tic-Tac-Toe. O desafio de programação Java aqui é usar Swing para adicionar uma interface gráfica de usuário (GUI) ao programa. A GUI deve se parecer com a mostrada aqui.
O jogo é simples. O jogador humano joga primeiro clicando em qualquer um dos quadrados. O quadrado clicado pelo humano exibe um grande X. Após as peças humanas, o programa determina se o humano ganhou ou forçou um sorteio. Se assim for, uma mensagem é exibida, a placa é reiniciada e um novo jogo começa. Caso contrário, o computador escolhe um movimento e marca seu quadrado com um grande O.
O programa então determina se o computador ganhou o jogo. Se assim for, o programa exibe uma mensagem, redefine a placa e inicia um novo jogo. Caso contrário, o jogador humano joga novamente. Isso continua até que um jogador vença ou todos os quadrados sejam preenchidos.
Seu programa deve usar a mesma classe TicTacToeBoard que você criou para Java Programming Challenge: adicionando classe ao programa Tic-Tac-Toe simples. Em outras palavras, ele deve implementar exatamente os mesmos métodos. Para sua conveniência, esses métodos são repetidos na tabela a seguir.
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. |
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 X's. 2: Se qualquer linha, coluna ou diagonal contém todos os O's. 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 | |
Você encontrará a solução para este desafio na guia Downloads da página de produtos Java All-in-One For Dummies, 4th Edition.
Boa sorte!