Boa tarde pessoal, encontro-me a fazer um jogo de caça ao tesouro em java e tou algumas duvidas em como usar uma pilha e uma fila para poder no final de um jogo mostrar quantos tesouros arrecadados, distancia percorrida e locais visitados. É pedido que estes sejam guardados numa mochila que mostro de seguida.
public class Mochila {
private Fila filaLocais = new Fila();
private Pilha ptesouro = new Pilha();
private Pilha pdistancia = new Pilha();
public Mochila() {
}
public Fila getFilaLocais() {
return filaLocais;
}
public Pilha getPdistancia() {
return pdistancia;
}
public Pilha getPtesouro() {
return ptesouro;
}
}
E dps tenho a classe jogador:
public class Jogador {
private String nome; // nome do jogador
private int valTesouro = 0; // valor do tesouro arrecadado
private int distPercorrida = 0; // valor da distancia acumulada
private int indice = 0; //Indice da posicao onde esta o jogador no mapa
private Local posicao = new Local(); //Posicao onde está o jogador
private int numero; // número identificador do jogador
private Mochila m = new Mochila(); // guarda a mochila do jogador
private Fila filaLocais = new Fila();
private Pilha ptesouro = new Pilha();
private Pilha pdistancia = new Pilha();
public Jogador() {
this("", 0, 0, null, 0, 0);
}
public Jogador(String nome, int numero, int indice, Local posicao, int valTesouro, int distPercorrida) {
this.nome = nome;
this.indice = indice;
this.posicao = posicao;
this.valTesouro = valTesouro;
this.distPercorrida = distPercorrida;
this.numero = numero;
}
public Jogador(String nome, int numero) {
this(nome, numero, 0, null, 0, 0);
}
public Jogador(int indice) {
this("", 0, indice, null, 0, 0);
}
//Definir o numero do jogador
public void setNumero(int numero) {
this.numero = numero;
}
//Retorna o numero do jogador
public int getNumero() {
return numero;
}
//Definir o nome do jogador
public void setNome(String nome) {
this.nome = nome;
}
//Retorna o nome do jogador
public String getNome() {
return nome;
}
//Definir a posicao do jogador do tipo Local
public void setPosicao(Local posicao) {
this.posicao = posicao;
}
//Retorna a posicao do jogador
public Local getPosicao() {
return posicao;
}
//Definir o indice actual do local onde se encontra o jogador
public void setIndice(int indice, int numero) {
this.indice = indice;
this.numero = numero;
}
//Retorna o indice actual
public int getIndice() {
return indice;
}
//Actualizar o valor da distancia (distancia actual + distancia percorrida)
public void setDistancia(int dist) {
distPercorrida += dist;
}
//Retornar o total de distancia percorrida
public int getDistancia() {
return distPercorrida;
}
//Actualizar o valor do tesouro (tesouro actual+tesouro adquirido)
public void setTesouro(int tes) {
valTesouro += tes;
}
//Retornar o total de tesouro acumulado
public int getTesouro() {
return valTesouro;
}
public Mochila getM() {
return m;
}
public void setM(Mochila m) {
this.m = m;
}
public void inicializaJogador() {
valTesouro = 0;
distPercorrida = 0;
indice = 0;
nome = "";
posicao = null;
}
public void empilhaTesouro(Pilha ptesouro) {
ptesouro.inserir(valTesouro);
}
public void empilhaDistancia(Pilha pdistancia) {
pdistancia.inserir(distPercorrida);
}
public void insereFilaLocais(Fila filaLocais) {
filaLocais.inserir(posicao);
}
public Mochila desempilhaTesouro() throws EstruturaVaziaException {
Object tesremove = new Object();
tesremove = ptesouro.remover();
return (Mochila) tesremove;
}
public Mochila espreitaTesouro() throws EstruturaVaziaException {
Object obj = new Object();
Mochila mt = new Mochila();
obj = ptesouro.espreitar();
mt = (Mochila) obj;
return mt;
}
}
E classe pontuações onde mostro a estatisticas finais do jogadores vencedor que dps de clicar nos botoes aparece numa textfield a informaçao dos tesouros, locais e distancia.
public class Pontuacoes extends javax.swing.JFrame {
private Local[] locais;
private Jogador novoJogador = new Jogador();
private Fila filaJogadores = new Fila();
private Mochila mochila = new Mochila();
public Pontuacoes(Local[] locais, Fila filaJogadores) {
initComponents();
this.locais = locais;// instancia a variavel
this.filaJogadores = filaJogadores;
setSize(500, 600);
}
public Fila getFilaJogadores() {
return filaJogadores;
}
public void setFilaJogadores(Fila filaJogadores) {
this.filaJogadores = filaJogadores;
}
public Jogador getNovoJogador() {
return novoJogador;
}
public void setNovoJogador(Jogador novoJogador) {
this.novoJogador = novoJogador;
}
public Mochila getMochila() {
return mochila;
}
public void setMochila(Mochila mochila) {
this.mochila = mochila;
}
@SuppressWarnings("unchecked")
.....
@SuppressWarnings("CallToThreadDumpStack")
private void jButtonDistanciaActionPerformed(java.awt.event.ActionEvent evt) {
jLabelDistancia.setText("" + mochila.getPdistancia() );
}
private void jButtonTesouroActionPerformed(java.awt.event.ActionEvent evt) {
jLabelTesouros.setText("" + mochila.getPtesouro());
}
private void jButtonLocaisActionPerformed(java.awt.event.ActionEvent evt) {
jTextArea1.insert(""+ mochila.getFilaLocais()+ "\n", WIDTH);
System.out.println(" a posição do jogador " + novoJogador.getPosicao().getLocal());
}
....
}
O problema é nada aparece nas caixas de texto porque diz Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException, ou seja, ele nao passa os valores, o que tou a fazer mal?
Ajudem-me!