4
respostas

Reiniciar o jogo ao tocar na tela de game over

boa tarde!

Estou querendo reiniciar o jogo, quando aparecer o game over.

ex.: aparecer um botão voltar ou um popup.

Poderia me dar uma luz, por favor.

Obrigado!

4 respostas

Olá Renan,

Para reiniciar o jogo, basta capturar o toque na tela e invocar novamente o método startGame(...) da MainActivity. Esse método instancia uma nova Thread com a GameView e assim o loop do jogo que fica no método run(...) se inicia novamente.

Olá Jeferson,

Eu tenho que usar esses dois métodos abaixo e também criar um outro para reiniciar, fiquei na dúvida.

public boolean onTouch(View v, MotionEvent event) {
        passaro.pula();
        return false;
        }
protected void onResume() {
        super.onResume();
        game.inicia();
        new Thread(game).start();
        }

Obrigado!

Olá Jeferson,

Dúvida, Eu tenho que usar esses dois métodos abaixo e também criar um outro para reiniciar?

Game

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

MainActivity

protected void onResume() {
        super.onResume();
        game.inicia();
        new Thread(game).start();
        }

Obrigado!

Olá Renan,

Você só vai precisar alterar alguns pontos da sua classe Game. Primeiro, vamos alterar o método run() para que ele não encerre a Thread do jogo quando houver colisão. Depois vamos alterar o onTouch(...) para reiniciar os jogo e os seus elementos:

public class Game extends SurfaceView implements Runnable, View.OnTouchListener {

    // outros métodos

    @Override
    public void run() {
        while (true) {   // adicionar esse while
            while (isRunning) {
                // o código aqui fica igual
            }
        }
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (isRunning) {
            passaro.pula();
        } else {
            inicializaElementos();
            inicia();
        }
        return false;
    }

}