Jogo com níveis

14 respostas
T

Aloha…

Estou precisando da vossa ajuda… então é assim… o meu tic tac toe… possui 3 classes que correspondem a 3 jogadores (computador) diferentes… e eu na classe Score tenho um JComboBox em que escolho qual o nível a escolher ? Como é que eu posso adicionar o jogador certo à medida que escolho o nível? Preciso da vossa ajuda…

Aqui vai o projecto…

http://telmasofia.com.sapo.pt/galo.rar

14 Respostas

velo

Bom, voce tem q garantir que os 3 jogadores tenham algo em comum, por exemplo, implementem uma mesma interface jogador…

Essa interface vai ter os metodos que permitem ao jogador jogar :stuck_out_tongue:

Depois, eh soh instanciar a classe relativa ao nivel selecionado.

VELO

T

Eu já tenho uma interface dos jogadores… Agora como eu faço para instanciar cada jogador tendo em conta cada nível ?

dudaskank

o jeito mais simples é usando if’s mesmo, algo assim:

if (nivel == Jogador.FACIL) { jogador = new JogadorFacil(); } else { jogador = new JogadorDificil(); }

rissato

vc pode usar os valores dos niveis (1, 2, 3, por exemplo) para incrementar algumas variáveis de controle como número de iterações, diminuição da influência de aleatoriedade, etc. Assim vc nao precisa criar um construtor pra cada nivel, basta passar o parâmetro:

jogador = new Jogador(nivel);
T

aí em jogador.FACIL , o fácil é um método da interface ?

T

Boa ideia rissato…

T

Aquele problema já está resolvido… o problema agora é outro… é assim… eu tenho uma JComboBox (na classe Score ) para escolher o nível que tem um actionPerformed onde chama o método setLevel() , depois eu tenho outra classe ( GaloMain)que vai buscar o level getLevel(), o problema é k ela tá indo buscar o valor ( getLevel()), antes de ter havido o setLevel() e aí ela vai buscar o valor errado ( zero…) como eu consigo resolver isto ?

Muito obrigado…

aqui vai o código…


http://telmasofia.com.sapo.pt/galo.rar

rissato

Não entendi. Pra que vc chama o getLevel() antes do setLevel()? O setLevel() deveria ser chamado quando o jogador escolhe um nivel, e o getLevel() no momento que o jogo propriamente dito for iniciado.

T

Pois… é isso que eu estou tentando fazer… mas depois em execução não é isso que acontece…
você não pode dar uma olhada no meu código ?

rissato

em qual classe está o evento do comboBox?

T

Na Score

rissato

vc está setando chamando o método play() sem chamar o setLevel(). Quando o setLevel é chamado, o jogo já se iniciou. Tenta chamar o play() no mesmo bloco de instruções onde se encontra o setLevel()

T

mas eu tou a xamar o play() no main…

dudaskank
TelmaSofia:
aí em jogador.FACIL , o fácil é um método da interface ?

voltando um pouco... isso aí é uma varável final estática, semelhante ao JFrame.EXIT_ON_CLOSE por exemplo. É uma constante que você define para alguma finalidade nesse caso.

Fica mais ou menos assim:
class Jogador {
   public final static int FACIL = 1;
   public final static int DIFICIL = 2;

   // o resto vai aqui
}

Sobre o problema novo, não posso ajudar porque o lixo do proxy aqui da empresa bolqueia tudo... mas vou tentar ainda assim.

Se a classe instanciada é diferente, como naquele meu exemplo lá de cima, ao dar o setLevel(), vc deve criar uma nova instância de classe que implemente os métodos do jogador.

Caso você tenha deixado tudo em uma classe como o rissato, em uma única classe que apenas muda os resultados conforme esse número do nível, aí não sei o que acontece, pois bastaria mudar o nível do jogador pra fazer o efeito desejado...

flw

Criado 10 de julho de 2006
Ultima resposta 11 de jul. de 2006
Respostas 14
Participantes 4