Pilha e Fila usar para Estatisticas

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!

Bom dia Cadinha,

esse erro de “java.lang.NullPointerException” senão me engano é porque algum item que voce não inicializou. Acredito que o erro reportado seja correspondentes as linhas 46 e 50 da classe Pontuacoes, nao encontrei no programa o momento que voce inicializa as Pilhas de ptesouro e pdistancia com .

Abraços 8)
Max