To tendo problemas com threads, tipo to simulando movimento pra fazer um jogo tipo Snake.
Como eu nao entendo nda d graficos que se movimentem, to testando fazer essa movimentação por um JTextArea
que atualiza a string nele a cada movimento.
Tenho la uma classe básica chamada Snake, onde ta toda a base de movimentação do jogo.
Basicamente uma matriz de char que vem a ser o mapa, 2 arrays de int que são as coordenadas
dos pontos que devem ser marcados na matriz e uma string que pega todos os elementos
da matriz e e retorna pra que eu possa jogá-la num JTextArea.
Aí eu tenho uma outra classe chamada SnakeThread que é o thread que move a engine do jogo.
Então fazendo o jogo tenho uma outra classe chamada SnakeTest, funciona beleza juntamente
com o thread, o problema ta sendo que dentro desse thread, cada movimento ele atualiza o mapa,
obviamente, testei isso usando System.out.println pra ver se estava realmente modificando a matriz
(tudo isso dentro do thread) e constatei que realmente funciona, agora o problema ta sendo que eu nao to
conseguindo fazer o JTextArea ser atualizado dentro do thread, fiz um método paint pra isso:
public void paint(Graphics g){
txt.setText(s.getString());
}
dentro do SnakeTest. Ele funciona se chamado de dentro da classe, mas quando eu chamo o método
la da classe SnakeThread, ele simplesmente nao funciona, nao sei o que que ta errado, procurei
no livro do deitel mas nao consegui fazer funcionar, testei todas as variaveis de movimento e a
logica ta certa, soh nao atualiza a tela.
classe SnakeThread:
classe SnakeTest: (apenas os metodos main, paint e engine)
o metodo engine() é disparado por um evento de botão.
Tudo funciona, onde eu chamo o repaint() dentro dessa segunda classe ele executa o paint()
normalmente, o que nao funciona é o chamar esse paint() pela classe do thread
o metodo copy() que ta no thread é pra copiar o objeto “snk” pro “s”, pra poder usar o paint()
na SnakeTest…
se puder ajudar vlw =)