gostaria de saber porque quando eu chamo o método calcularProbabilidade abaixo
dar
Exception in thread "main" java.lang.NullPointerException
at GeoplanoAPI.JogadaAleatoria.processaJogada(JogadaAleatoria.java:78)
[code]
/**
*Classe responsavel por implementar os metodos das jogadas aleatorias para o jogo
-
@author Diego Balbinoi
*/
public class JogadaAleatoria implements Jogada {/**
- armazena a posição da jogada da inteligencia
/
private Posicao melhorJogada;
/* - armazena a variavel inicializacao da jogada da inteligencia
*/
private VariaveisInicializacao variavel;
/*
*
**/
private CalculaProbabilidade calcula;/*
*
**/
private ListaProbabilidade lista;public JogadaAleatoria() {
}/**
-
metodo que processa a melhor jogada aleatoria
-
@param posicoes
-
@param valores
*/
public void processaJogada(ArrayList posicoes, ValoresJogada valores) {/**
- posição auxiliar que armazena as jogadas retiradas da lista de jogadas
/
Posicao novaPos = null;
/* - comp é uma variavel complementar somada a i ou j para obter o valor I ou J das extremidades da jogada
/
int comp = (valores.getLado() - 1);
/* - variavel para armazenar o tabuleiro
/
boolean tab[][] = valores.getTabueiro();
/* - variavel que recebe o valor I da jogada
/
int i;
/* - variavel que recebe o valor J da jogada
/
int j;
/* - armazena o valor da melhor jogada
/
double valorJogada = 0.0;
/* - armazena o valor das jogadas
*/
double valorAux=0.0;
if(valores.getLado()==1){
try {
lista=calcula.calcularProbabilidade(“l1.txt”);
} catch (IOException ex) {
ex.printStackTrace();
}
NoProbabilidade n=lista.inicio;
// n=variavel.getNl1();
System.out.println(“o valor de iii”+n.pI);
//for enquanto existir posiçoes na lista
for (int aux = 0; aux < posicoes.size(); aux++) {
novaPos = (Posicao) posicoes.get(aux);
i = novaPos.getI();
j = novaPos.getJ();
while(n.pI!=i && n.pJ!=j){
n=n.proxProbabilidade;
}valorAux=n.probabilidade; valorJogada = verificaMelhorJogada(valorAux, valorJogada, novaPos); }
}
else if(valores.getLado()==2){
try {
lista=calcula.calcularProbabilidade(“l2.txt”);
} catch (IOException ex) {
ex.printStackTrace();
}
NoProbabilidade n=lista.inicio;
//NoProbabilidade n=variavel.getNl2();
System.out.println(“o valor de iii”+n.pI);
//for enquanto existir posiçoes na lista
for (int aux = 0; aux < posicoes.size(); aux++) {
novaPos = (Posicao) posicoes.get(aux);
i = novaPos.getI();
j = novaPos.getJ();
while(n.pI!=i && n.pJ!=j){
n=n.proxProbabilidade;
}valorAux=n.probabilidade; valorJogada = verificaMelhorJogada(valorAux, valorJogada, novaPos); }
}
else if(valores.getLado()==3){
try {
lista=calcula.calcularProbabilidade(“l3.txt”);
} catch (IOException ex) {
ex.printStackTrace();
}
NoProbabilidade n=lista.inicio;
//NoProbabilidade n=variavel.getNl3();
System.out.println(“o valor de iii”+n.pI);
//for enquanto existir posiçoes na lista
for (int aux = 0; aux < posicoes.size(); aux++) {
novaPos = (Posicao) posicoes.get(aux);
i = novaPos.getI();
j = novaPos.getJ();
while(n.pI!=i && n.pJ!=j){
n=n.proxProbabilidade;
}valorAux=n.probabilidade; valorJogada = verificaMelhorJogada(valorAux, valorJogada, novaPos); }
}
else if(valores.getLado()==4){
try {
lista=calcula.calcularProbabilidade(“l4.txt”);
} catch (IOException ex) {
ex.printStackTrace();
}
NoProbabilidade n=lista.inicio;
// NoProbabilidade n=variavel.getNl4();
System.out.println(“o valor de iii”+n.pI);
//for enquanto existir posiçoes na lista
for (int aux = 0; aux < posicoes.size(); aux++) {
novaPos = (Posicao) posicoes.get(aux);
i = novaPos.getI();
j = novaPos.getJ();
while(n.pI!=i && n.pJ!=j){
n=n.proxProbabilidade;
}valorAux=n.probabilidade; valorJogada = verificaMelhorJogada(valorAux, valorJogada, novaPos); }
}
else if(valores.getLado()==5){
try {
lista=calcula.calcularProbabilidade(“l5.txt”);
} catch (IOException ex) {
ex.printStackTrace();
}
NoProbabilidade n=lista.inicio;
//NoProbabilidade n=variavel.getNl5();
System.out.println(“o valor de iii”+n.pI);
//for enquanto existir posiçoes na lista
for (int aux = 0; aux < posicoes.size(); aux++) {
novaPos = (Posicao) posicoes.get(aux);
i = novaPos.getI();
j = novaPos.getJ();
while(n.pI!=i && n.pJ!=j){
n=n.proxProbabilidade;
}valorAux=n.probabilidade; valorJogada = verificaMelhorJogada(valorAux, valorJogada, novaPos); }
}
- posição auxiliar que armazena as jogadas retiradas da lista de jogadas
}
/**
- retorna a posicao para a jogada
-
@return pos
*/
public Posicao getJogada() {
return melhorJogada;
}
/**
- Metodo que escolhe qual a melhor jogada entre a jogada atual e o melhor estado registrado,
- eh usado pelo metodo processaJogada() dessa mesma classe.
- @param valorAux
- @param valorJogada
- @param jogada
-
@return
*/
public double verificaMelhorJogada(double valorAux, double valorJogada, Posicao jogada) {
if (valorAux > valorJogada) {
jogada.setValorJogadaAleatoria(valorJogada);
melhorJogada = jogada;
return valorAux;
} else {
return valorJogada;
}
}
/**
-
Esse metodo verifica todos os espaços vizinhos a jogada, se a jogada tiver uma area completamente
-
vazia ao redor ela ganha pontos a mais que são acrescentados na verificação da melhor jogada
-
@param tab
-
@param i
-
@param j
-
@param comp
-
@return valorAdicional
/
public int verificaEspecosAoRedor(boolean tab[][], int i, int j, int comp) {
/*- variavel para contar os espaços ocupados
/
int ocupado = 0;
/* - variavel para contar os espaços vazios
/
int vazio = 0;
/* - valor adicional que será acrescentado caso haja uma area completamente vazia ao redor
/
int valorAdicional = 0;
/* - variavel auxiliar para i
/
int auxI;
/* - variavel auxiliar para j
*/
int auxJ;
//for para percorrer as casas e contar os espaços vazios e ocupados
for (auxI = i - 1; auxI <= (i + comp + 1); auxI++) {
for (auxJ = j - 1; auxJ <= (j + comp + 1); auxJ++) {
if (tab[auxI][auxJ] == true) {
ocupado++;
} else {
vazio++;
}
}
}
if((ocupado == 1 && vazio == 8) || (ocupado == 4 && vazio == 12) || (ocupado == 9 && vazio == 16) || (ocupado == 16 && vazio == 20) || (ocupado == 25 && vazio == 24)){
valorAdicional = 25;
}
return valorAdicional;
}
}[/code] - variavel para contar os espaços ocupados
- armazena a posição da jogada da inteligencia
o método calcular probabilidade é esse
public ListaProbabilidade calcularProbabilidade(String nome) throws IOException {}