Tenho mais dois problemas, vou fazer de forma individual pois pode ajudar outros que podem ter o mesmo problema...
Neste é o gameOver que esta acontecendo sem o passaro encostar nos canos acho q ele se alinha de forma vertical mesmo estando no meio da tela. Não sei qual classe tenho q mandar para ver entao vou postar o Verificador de colisao e a classe Game
package br.com.alura.jumper.engine;
import br.com.alura.jumper.elements.Canos;
import br.com.alura.jumper.elements.Passaro;
public class VerificadorDeColisao {
private final Passaro passaro;
private final Canos canos;
public VerificadorDeColisao(Passaro passaro, Canos canos) {
this.passaro = passaro;
this.canos = canos;
}
public boolean temColisao() {
return canos.temColisaoCom(passaro);
}
}
package br.com.alura.jumper.engine;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import br.com.alura.jumper.R;
import br.com.alura.jumper.elements.Cano;
import br.com.alura.jumper.elements.Canos;
import br.com.alura.jumper.elements.GameOver;
import br.com.alura.jumper.elements.Passaro;
import br.com.alura.jumper.elements.Pontuacao;
import br.com.alura.jumper.graphic.Tela;
public class Game extends SurfaceView implements Runnable, View.OnTouchListener {
private final Context context;
private boolean isRunning = true;
private SurfaceHolder holder = getHolder();
private Passaro passaro;
private Canos canos;
private Canvas canvas;
private Bitmap background;
private Tela tela;
private Pontuacao pontuacao;
private Som som;
public Game(Context context) {
super(context);
this.context = context;
tela = new Tela(context);
//som = new Som(context);
inicializaElementos();
setOnTouchListener(this);
}
private void inicializaElementos(){
passaro = new Passaro(tela,context,som);
pontuacao = new Pontuacao();
canos = new Canos(tela,pontuacao, context);
Bitmap back = BitmapFactory.decodeResource(getResources(), R.drawable.background);
background = Bitmap.createScaledBitmap(back, back.getWidth(), tela.getAltura(),false);
}
@Override
public void run() {
while (isRunning){
if(!holder.getSurface().isValid()) continue;
canvas = holder.lockCanvas();
canvas.drawBitmap(background, 0, 0, null);
passaro.desenhaNo(canvas);
passaro.cai();
canos.desenhaNo(canvas);
canos.move();
pontuacao.desenhaNo(canvas);
if(new VerificadorDeColisao(passaro, canos).temColisao()){
new GameOver(tela).desenhaNo(canvas);
isRunning = false;
}
holder.unlockCanvasAndPost(canvas);
}
}
public void inicia() {
isRunning = true;
}
public void pausa() {
isRunning = false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
passaro.pula();
return false;
}
}