Jogos Android criando um game do zero usando classes nativas

jogos-android

#1

Boa noite estou no capítulo para desenhar cano no Canvas, porém quando coloco o this.cano.DesenhaNo(canvas) e emulo aparece escrito infelizmente Jumper parou de rodar. Segue abaixo o código da classe Game e da classe cano.
Classe Game
public class Game extends SurfaceView implements Runnable, View.OnTouchListener{

private Passaro passaro;
private Cano cano;
private Bitmap background;
private Tela tela;
private final SurfaceHolder holder= getHolder();



public void inicia(){
    this.estaRodando=true;
}

public void cancela(){
    this.estaRodando=false;

}



private Boolean estaRodando = true;



private void inicializaElementos(){
    Bitmap back= BitmapFactory.decodeResource(getResources(),
                                R.drawable.background);
    this.background=Bitmap.createScaledBitmap(back,
                    back.getWidth(),tela.getAltura(),false);
    this.passaro= new Passaro();
    this.cano= new Cano(this.tela,200);

}

public Game(Context context){
    super(context);
    setOnTouchListener(this);
    this.tela= new Tela(context);
    inicializaElementos();
}


@Override
public void run() {
    while(this.estaRodando){
        if(!this.holder.getSurface().isValid()) continue;
        Canvas canvas= this.holder.lockCanvas();
        canvas.drawBitmap(this.background,0,0,null);
        this.passaro.desenhaNo(canvas);

this.cano.desenhaNo(canvas);
this.passaro.cai();
this.holder.unlockCanvasAndPost(canvas);
}

}
@Override
public boolean onTouch(View v, MotionEvent event) {
    this.passaro.pula();
    return false;
}
}

Agora segue classe cano

package casadocodigo.br.com.jumper;

import android.graphics.Canvas;
import android.graphics.Paint;

public class Cano {

private static final Paint VERDE= Cores.getCorDoCano();

private  static  int TAMANHO_DO_CANO=250;
private  static int LARGURA_DO_CANO=100;
private int alturaDoCanoInferior;
private Tela tela;
private int posicao;



public Cano(Tela tela, int posicao){
    this.posicao=posicao;
    this.alturaDoCanoInferior=tela.getAltura()-TAMANHO_DO_CANO;

}


public void desenhaNo(Canvas canvas){
    desenhaCanoInferiorNo(canvas);
}

private void desenhaCanoInferiorNo(Canvas canvas){
    canvas.drawRect(this.posicao,
            this.alturaDoCanoInferior,
            this.posicao+LARGURA_DO_CANO,
            this.tela.getAltura(),VERDE);
}

}
E agora uma imagem do que aparece quando emulo