Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Aula 6 pontuação

Aula 6 pontuação quando passa o primeiro cano da o seguinte erro FATAL EXCEPTION: Thread-120 java.lang.NullPointerException at br.com.jogo.engine.elements.Canos.move(Canos.java:44) at br.com.jogo.engine.Game.run(Game.java:60) at java.lang.Thread.run(Thread.java:856)

3 respostas

Tiago,

Posta seu código da classe Canos para podermos ver o motivo de ter dado este NullPointer.

package br.com.jogo.engine.elements;

import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator;

import android.graphics.Canvas; import br.com.jogo.graphic.Tela;

public class Canos {

private static final int QUANTIDADE_DE_CANOS = 5; private static final int DISTANCIA_ENTRE_CANOS = 200; private final List canos = new ArrayList(); private Tela tela; private Pontuacao pontuacao;

public Canos(Tela tela, Pontuacao pontuacao){

int posicaoInicial = 200; this.pontuacao = pontuacao; this.tela = tela; for(int i=0; i < QUANTIDADE_DE_CANOS; i++) { posicaoInicial += DISTANCIA_ENTRE_CANOS; canos.add(new Cano(tela, posicaoInicial)); } }

public void desenhaNo(Canvas canvas) { for(Cano cano: canos){ cano.desenhaNo(canvas); }

}

public void move() { ListIterator iterator = canos.listIterator(); while (iterator.hasNext()) { Cano cano = iterator.next(); cano.move();

if(cano.saiuDaTela()) { pontuacao.aumenta(); //desenha outro cano iterator.remove(); Cano outroCano = new Cano(tela, getMaximo() + DISTANCIA_ENTRE_CANOS); iterator.add(outroCano);

} }

}

private int getMaximo() { int maximo = 0; for (Cano cano : canos) { maximo = Math.max(cano.getPosicao(), maximo); } return maximo; }

}

solução!

Thiago pelo que vi o meu código está diferente neste ponto:

private final List canos = new ArrayList() private final List canos = new ArrayList();

voce tem que especificar que a lista é de canos.

este seria o metodo move:

public void move() { ListIterator iterator = canos.listIterator(); while(iterator.hasNext()){ Cano cano = (Cano) iterator.next(); cano.move(); if (cano.saiuDaTela()) { pontuacao.adiciona(); iterator.remove(); Cano outroCano = new Cano(tela, getMaximo() + DISTANCIA_ENTRE_CANOS, context); iterator.add(outroCano); } } }

se nao resolver poste a classe Game, para olharmos a instancia da classe e a classe cano.