3. Atualize o Tabuleiro
No último exercício, temos um programa que imprime o tabuleiro e pede para o usuário: Digite sua jogada (1-9):
a cada jogada válida. Porém, o tabuleiro ficava vazio (veja abaixo). Neste exercício, vamos aprender como atualizar o tabuleiro e gerar uma jogada aleatória para o computador.
<<<~ Jogo da Velha ~>>>
* Escolha um número de 1 a 9 para fazer sua jogada
* Jogador: 'X' Computador: 'O'
1 | 2 | 3
---+---+---
4 | 5 | 6
---+---+---
7 | 8 | 9
Digite sua jogada (1-9): 1
| |
---+---+---
| | <--------------- O tabuleiro não mostra as jogadas do jogador/computador
---+---+---
| |
Digite sua jogada (1-9): d
Entrada inválida; digite novamente sua jogada (1-9): 3
| |
---+---+---
| | <--------------- O tabuleiro não mostra as jogadas do jogador/computador
---+---+---
| |
Digite sua jogada (1-9):
Mostrando as Jogadas do Usuário
Dentro do if hasNextInt()
, antes de chamar o método printBoard(board)
, atualize o array board
com a jogada do usuário no índice correspondente.
Lembre-se que o jogador é representado por "X"
no tabuleiro.
Lembretes
- Java usa índices começando do zero (0-indexing) e o jogador foi instruído a digitar números de 1 a 9.
- Para acessar um elemento de um array, use a notação de índice:
minhaVariavel[numeroDoIndice]
.
Preparando as Jogadas do Computador
Crie um novo método getComputerMove(String[] curBoard)
que gera uma jogada válida para o computador (entre 1 e 9) usando o tabuleiro atual como entrada.
Siga o próximo passo para implementar o método.
Implementando o Movimento do Computador
No getComputerMove()
, vamos gerar aleatoriamente um número entre 1 e 9 para o computador.
Vamos usar a classe Random
, que é muito usada em Java para gerar números aleatórios.
Para usar essa classe e seus métodos, precisamos importar com a seguinte linha no topo do arquivo:
import java.util.Random;
Crie um objeto Random
chamando o construtor Random()
.
Random rand = new Random();
Gerando Números Aleatórios
Chame o método int nextInt(int num)
no objeto Random
que você criou para gerar um número aleatório de 1 a 9.
Uma chamada ao método int nextInt(int num)
retorna um número aleatório de 0 até num-1
.
int position = rand.nextInt(9);
Verificando se a Jogada é Válida
Depois de ter um número aleatório de 1 a 9, precisamos verificar se o espaço está disponível.
Use um laço while
para gerar uma jogada válida para o computador, caso o número gerado não seja um espaço livre!
Retorne o número assim que encontrar uma jogada válida para o computador.
while (!curBoard[position].equals(" ")){
position = rand.nextInt(9);
}
return position;
Atualize o Array do Tabuleiro
Assim como no primeiro passo, devemos atualizar o array board
para o computador antes de chamar o método printBoard(board)
.
Gere uma jogada aleatória chamando getComputerMove()
!
Lembre-se que o computador é representado por "O"
no tabuleiro.
board[getComputerMove(board)] = "O"; //getComputerMove retorna o inteiro 0-8 que é a posição correta no array
printBoard(board);
Execute o Programa
Clique em Executar
agora! O tabuleiro deve atualizar tanto a jogada do jogador quanto do computador corretamente a cada entrada, como mostrado abaixo:
<<<~ Jogo da Velha ~>>>
* Escolha um número de 1 a 9 para fazer sua jogada
* Jogador: 'X' Computador: 'O'
1 | 2 | 3
---+---+---
4 | 5 | 6
---+---+---
7 | 8 | 9
Digite sua jogada (1-9): 1
X | |
---+---+---
| |
---+---+---
| O |
Digite sua jogada (1-9): 1
Posição inválida; digite novamente sua jogada (1-9): 2
X | X |
---+---+---
| | O
---+---+---
| O |
Digite sua jogada (1-9):
Tudo parece estar funcionando bem! Só falta determinar quem é o vencedor/perdedor do jogo, que vamos implementar no próximo exercício!