Java Desafio Programação: A Simple Tic-Tac-Toe Jogo
Sua missão, caso decida aceitá-la, é criar um programa Java que pode jogar um jogo de Tic-Tac-Toe com o usuário.
Como você provavelmente sabe, Tic-Tac-Toe é um jogo simples jogado geralmente com papel e lápis. Primeiro, você faz uma simples grade de 3 x 3 sobre o papel. Em seguida, dois jogadores alternam voltas, marcando Xs e Os espaços vazios no grid. O primeiro jogador que faz três de suas marcas em uma horizontais, verticais ou diagonais vitórias de linha. Se todos os espaços na grade são preenchidos antes de qualquer jogador marca três em uma fileira, o jogo é um empate.
Aqui estão as regras e instruções para este desafio:
O computador joga contra o ser humano. O ser humano se move em primeiro lugar e é X. O computador está O.
O programa deve começar com a exibição de uma mensagem curta de boas-vindas e, em seguida, deve levar o jogador para o seu primeiro movimento. Por exemplo:
Bem-vindo ao Tic-Tac-Toe. Por favor, indique o seu primeiro passo:
Para designar os quadrados da grade, use as letras A, B, e C para as colunas e os números 1, 2 e 3 para as linhas, como este:
A1 B1 C1A2 B2 C3 C2A3 B3
Assim, para colocar um X na praça superior esquerda, o jogador humano seria digite o texto A1 quando o programa pede o jogador para um movimento.
Após o humano entra um movimento, o programa deve exibir o status atual do conselho no console.
Use X para marcar peças de teatro e S da humanos para marcar peças do computador. Usar caracteres de barras verticais (encontrados no teclado com o caractere de barra invertida, logo acima a tecla Enter) e hífens para desenhar a placa em uma grade simples.
Por exemplo, se o usuário inseriu A1 como sua primeira jogada, o programa exibirá o seguinte:
X | | --- | --- | --- | | --- | --- | --- | |
Após o movimento do ser humano, o programa determina o seu movimento, anuncia-lo para o usuário, exibe uma placa atualizado, e em seguida, pede para o movimento do usuário.
Por exemplo, você pode ver o seguinte:
Vou jogar A2: X | O | --- | --- | --- | | --- | --- | --- | | Por favor, indique o seu próximo passo:
O jogo continua até que um jogador marcou três em uma linha ou todos os quadrados foram preenchidos sem vencedor. O programa deve ser capaz de determinar se um ou outro jogador marcou três em linha e ganhou o jogo. (Esta é a parte mais difícil deste desafio de programação.)
Quando o jogo acabou, o programa exibe uma mensagem indicando o resultado do jogo: "Você me bater" se o jogador humano ganha, "Eu te bater!" se o jogador do computador ganha, ou "É um empate!" se o jogo termina com um empate.
Os jogadores humanos e computadores podem jogar apenas as praças que ainda não estão ocupados por nenhum jogador.
O programa termina quando o jogo é ganho por qualquer jogador ou o jogo é um empate. Se você quiser jogar novamente, você deve executar o programa novamente.
Note-se que você é livre para usar qualquer método que deseja determinar como o computador deve fazer seus movimentos. Eu sugiro que você envie o computador para jogar sempre no primeiro quadrado vazio. Isso obviamente não é a melhor maneira de jogar Tic-Tac-Toe, e você não terá problemas para bater o computador cada vez que você jogar. Mas a escolha desta estratégia de jogo simples permite que você se concentrar em outros aspectos da programação, como forma de representar internamente a grade e como determinar quando um jogador ganhou o jogo ou quando o jogo terminou em um empate.
(Em "Programação Java Challenge: Adição de matrizes para o Programa de Tic-Tac-Toe Simples" você está convidado a vir para cima com uma melhor estratégia para o programa para determinar as suas peças.)
Aqui está um exemplo da apresentação da consola para um jogo completo:
Bem-vindo ao Tic-Tac-Toe. Por favor, indique o seu primeiro passo: A1X | | --- | --- | --- | | --- | --- | --- | | I vai jogar em A2: X | O | --- | --- | --- | | --- | --- | --- | | Por favor, indique o seu próximo passo: B1X | O | --- | --- | --- X | | --- | --- | --- | | Eu vou jogar na A3: X | O | O --- | --- | --- X | | --- | --- | --- | | Por favor, indique o seu próximo passo: C1X | O | O --- | --- | --- X | | --- | --- | --- X | | Você me bater!
Aqui estão algumas dicas para você começar:
A melhor maneira de representar a grade é com um array. Por enquanto, use nove variáveis, chamados A1, A2, A3, B1, B2, B3, C1, C2, e C3.
Se você usar o int digite às variáveis grid, então você pode usar 1 para indicar que um quadrado contém um X e 2 para indicar que um quadrado contém um O.
Oito linhas possíveis pode levar a uma vitória. Um jogador ganha se qualquer uma das seguintes combinações de quadrados são 1 (para X) ou dois (para S):
A1 - A2 - A3a1 - B1 - C1A1 - B2 - C3B1 - B2 - b3a2 - B2 - C2A3 - B2 - C1C1 - C2 - C3A3 - B3 - C3
Há duas maneiras de determinar se o jogo é um empate. O primeiro é verificar todos os nove quadrados: Se nenhum dos quadrados está vazio e nenhum jogador ganhou, o jogo é um empate. A segunda é para contar os movimentos: Se nove lances foram feitos e nenhum jogador ganhou, o jogo é um empate.
Você pode encontrar uma solução para este desafio de programação no guia Downloads do Java All-in-One For Dummies, 4 página do produto Edition.
Boa sorte!