Problem when trying to make a constant subtraction in Android Studio

Asked

Viewed 27 times

-3

I wanted to create a very simple game in which consists of pressing a button, after that the program would give two random numbers and the life of each character would fall according to this number, but whenever I press the button again life resets and stays in this infinite loop.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void batalha(View view){
        //Criando variaveis e colocando valor nelas
        //Vinculação dos objetos
        TextView paladino = findViewById(R.id.txthppaladino);
        TextView quimera = findViewById(R.id.txthpquimera);
        int hppaladino, hpquimera;
        hppaladino = 200;
        hpquimera = 200;
        int danopaladino = new Random().nextInt(50);
        int danoquimera = new Random().nextInt(50);
        hppaladino = hppaladino - danoquimera;
        hpquimera = hpquimera - danopaladino;
        //Criando um AlertDialog
        AlertDialog.Builder dano = new AlertDialog.Builder(MainActivity.this);
        //Alterar titulo
        dano.setTitle("Dano");
        //Alterar mensagem
        dano.setMessage("Dano do Paladinho foi " +danopaladino+" e o Dano da Quimera foi " +danoquimera);
        //Alterar mensagem da caixa
        dano.setNeutralButton("Fechar", null);
        //Mostrando o Alert Dialog
        dano.show();
        paladino.setText("HP Paladino = " +hppaladino);
        quimera.setText("HP Quimera = " +hpquimera);
        if (hppaladino <=0 && hpquimera >=0){
            AlertDialog.Builder vitoria1 = new AlertDialog.Builder(MainActivity.this);
            //Alterar titulo
            dano.setTitle("Parabéns");
            //Alterar mensagem
            dano.setMessage("Vitória da Quimera =D");
            //Alterar mensagem da caixa
            dano.setNeutralButton("Fechar", null);
            //Mostrando o Alert Dialog
            dano.show();
        }
        if (hppaladino >= 0 && hpquimera <=0){
            AlertDialog.Builder vitoria1 = new AlertDialog.Builder(MainActivity.this);
            //Alterar titulo
            dano.setTitle("Parabéns");
            //Alterar mensagem
            dano.setMessage("Vitória do Paladino =D");
            //Alterar mensagem da caixa
            dano.setNeutralButton("Fechar", null);
            //Mostrando o Alert Dialog
            dano.show();
        }
        if (hppaladino <= 0 && hpquimera <= 0){
            AlertDialog.Builder vitoria1 = new AlertDialog.Builder(MainActivity.this);
            //Alterar titulo
            dano.setTitle("Triste");
            //Alterar mensagem
            dano.setMessage("Ocorreu um empate ;-;");
            //Alterar mensagem da caixa
            dano.setNeutralButton("Fechar", null);
            //Mostrando o Alert Dialog
            dano.show();
        }


    }     

1 answer

0


You do not need to initialize the Textviews always in the action of the button, both them as hppaladino and hpquimera within onCreate. The way you’re doing every time you click the button hppaladin and hpquimera values are always 200.

Then it would look something like this:

public class MainActivity extends AppCompatActivity {
    //Declara as suas variáveis principais
    private TextView paladino, quimera;
    private int hppaladino, hpquimera;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Inicializando variáveis
        paladino = findViewById(R.id.txthppaladino);
        quimera = findViewById(R.id.txthpquimera);
        hppaladino = 200;
        hpquimera = 200;
    }

    public void batalha(View view) {
        int danopaladino = new Random().nextInt(50);
        // restante do seu código igual...
    }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.