Jogo da Velha - Como fazer a vez do computador?

4 respostas
P

Pessoal, fiz meu primeiro game (jogo da velha) através da programação java e estou com um problema.
Quando é a vez da pessoa jogar basta clicar em um dos 9 botões para ele marcar com “X”.
Após a pessoa jogar é a vez da maquina jogar… coloquei a chamada do metodo dentro do ActionListener
do botão então quando o jogador acaba de jogar o sistema deve esperar por 2 segundos e então a maquina joga.

Problema: quando o botão é acionado ele permanece acionado até que todos os processos sejam executados
e assim quando ele termina de processar a maquina ja jogou e não foi possivel observar a espera dos 2 segundos.

Ja tentei utilizar Thread Sincronizada, tentei criar classes separadas mas nada funcionou. Qual seria a melhor maneira para fazer funcionar?


4 Respostas

H

Deve estar havendo alguma coisa errada, pois com a thred deveria se esperar esses 2 segundos, e assim na sequencia jogar…

P

a Thread esta executando… o programa espera os 2 segundos para jogar… o problema é que a minha jogada só aparece na tela depois que a thread é executada… visualmente o “X” e o “O” aparecem ao mesmo tempo logo após a espera dos 2 segundos acontecendo assim:

  • clico em 1 dos 9 botões
  • o programa espera 2 segundos (enquanto isso o botão permanece pressionado)
  • após os 2 segundos aparecem o “X” e o “O”.

Deveria acontecer:

  • clico em 1 dos 9 botões
  • aparece o “X” no botão que eu cliquei
  • o programa espera 2 segundos
  • a maquina marca um dos botões restantes com “O”

no meu programa toda esta sequencia esta sendo chamada no ActionListener associada ao botão.

H

Quando eu faço, eu tb utilizado o action Listener do botão… o que está acontecendo é que essa Thred não está sendo EXecutada corretamente.
Tudo o que você faz está dentro da Thred?

P

quando aciono o botão ele executa o método com esta estrutura:

//*************************************************************************

public static void actionPerformed(ActionEvent e) {

JButton.setIcon(“X.png”); // adiciona o X no botão

Thread maquina_joga = new Thread(); // cria o objeto que vai executar a thread
maquina_joga.start(); // chama a thread

}

public maquina_joga() implements runnable {

try {

public void run() {

Thread.sleep(2000);             // espera os 2 segundos (neste momento o botão clicado pelo usuário ja deveria ser atualizado com o X, o que nao esta acontecendo, o botão parece permanecer pressionado aguardando o final desta thread.

JButton.setIcon("O.png");     // o botão é marcado com "O".

}

catch (Exception){
}

}

//*****************************************************************************

Criado 11 de janeiro de 2015
Ultima resposta 12 de jan. de 2015
Respostas 4
Participantes 2