0

I have created a mathematics quiz game with some easy questions.The problem is that the questions are repeating again and again.Is it possible to check if a question is repeated and if it is repeated then ask another question and then end the game when all questions have been answered.I don't want any of the questions to be repeated.How do I achieve this?Please Help.Here is my code.

public class MathsEasy extends Activity {

    Button answer1,answer2,answer3,answer4;
    TextView score,question;
    private MathsEasyQuestions mQuestions  = new MathsEasyQuestions();
    private String mAnswer;
    private int mScore = 0;
    private int mQuestionsLength = mQuestions.mQuestions.length;
    Random r;



    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        setContentView(R.layout.maths_easy);


        r = new Random();


        answer1 = (Button)findViewById(R.id.answer1);
        answer2 = (Button)findViewById(R.id.answer2);
        answer3 = (Button)findViewById(R.id.answer3);
        answer4 = (Button)findViewById(R.id.answer4);


        score = (TextView)findViewById(R.id.score);
        question = (TextView)findViewById(R.id.question);


        score.setText("Score: " + mScore);
        updateQuestion(r.nextInt(mQuestionsLength));


        answer1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (answer1.getText() == mAnswer){
                    mScore++;
                    score.setText("Score: " + mScore);
                    updateQuestion(r.nextInt(mQuestionsLength));
                    updateQuestion(r.nextInt(mQuestionsLength));
                }  else {

                    gameOver();
                }

            }
        });





        answer2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                if (answer2.getText() == mAnswer){
                    mScore++;
                    score.setText("Score: " + mScore);
                    updateQuestion(r.nextInt(mQuestionsLength));
                    updateQuestion(r.nextInt(mQuestionsLength));
                }  else {

                    gameOver();
                }

            }
        });



        answer3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                if (answer3.getText() == mAnswer){
                    mScore++;
                    score.setText("Score: " + mScore);
                    updateQuestion(r.nextInt(mQuestionsLength));
                    updateQuestion(r.nextInt(mQuestionsLength));
                }  else {

                    gameOver();
                }

            }
        });




        answer4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                if (answer4.getText() == mAnswer){
                    mScore++;
                    score.setText("Score: " + mScore);
                    updateQuestion(r.nextInt(mQuestionsLength));
                    updateQuestion(r.nextInt(mQuestionsLength));
                }  else {

                    gameOver();
                }

            }
        });


    }













    private void updateQuestion(int num){
        question.setText(mQuestions.getQuestion(num));
        answer1.setText(mQuestions.getChoice1(num));
        answer2.setText(mQuestions.getChoice2(num));
        answer3.setText(mQuestions.getChoice3(num));
        answer4.setText(mQuestions.getChoice4(num));


        mAnswer = mQuestions.getCorrectAnswer(num);
    }




    private void gameOver(){
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MathsEasy.this);
        alertDialogBuilder
                .setMessage("Game Over! Your Score Is " + mScore + " points")
                .setCancelable(false)
                .setPositiveButton("New Game", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        startActivity(new Intent(getApplicationContext(),MathsEasy.class));


                    }
                })


                .setNegativeButton("Exit", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        startActivity(new Intent(getApplicationContext(),Mathematics.class));

                    }
                });

        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();


    }


    @Override
    public void onBackPressed() {
        Intent intent = new Intent(this,Mathematics.class);
        startActivity(intent);
    }
}

public class MathsEasyQuestions {

    public String mQuestions[]={

            "2+2 = ?",
            "3+2 = ?",
            "4+2 = ?",
            "9 x 2 = ?",
            "56-22 = ?",
            "100 ÷ 5 = ?",
            "I have 300 stickes I gave 199 to my friend. how many do  I have now ?",
            "1+2+3+4+5+6+7+8+9 = ?",
            "I am 5 years older than my brother.My brother is 14 years old.How old am I?",
            "64 turtles. A quarter of them swim away. How many are left?",
            "7 birds are on a fence. 3 fly away. How many are left?",
            "What is 10 multiplied by 10?",
            "Four times five is?"
    };


    public String mChoices[][] = {

            {"1","6","4","9"},
            {"3","8","2","5"},
            {"6","2","7","1"},
            {"12","18","16","15"},
            {"27","42","34","39"},
            {"20","10","50","25"},
            {"203","114","122","101"},
            {"29","45","35","56"},
            {"18","20","19","22"},
            {"32","34","40","48"},
            {"4","10","5","2"},
            {"110","100","10","90"},
            {"20","25","15","24"},







    };


    public String mCorrectAnswer[]={"4","5","6","18","34","20","101","45","19","48","4","100","20"};


    public String getQuestion(int a){
        String question = mQuestions[a];
        return question;
    }

    public String getChoice1(int a){
            String choice  = mChoices[a][0];
            return choice;
    }


    public String getChoice2(int a){
        String choice  = mChoices[a][1];
        return choice;
    }


    public String getChoice3(int a){
        String choice  = mChoices[a][2];
        return choice;
    }



    public String getChoice4(int a){
        String choice  = mChoices[a][3];
        return choice;
    }


    public String getCorrectAnswer(int a){
        String answer = mCorrectAnswer[a];
        return answer;
    }




}
Furqan Hussain
  • 135
  • 1
  • 4
  • 14
  • 1
    [Why is “Is it possible to…” a poorly worded question?](https://softwareengineering.meta.stackexchange.com/q/7273/202153) – Andreas Aug 10 '18 at 02:12
  • I would suggest either creating a `Question` class to hold the question, possible answers, and correct answers, or use a `HashMap` to avoid using three arrays – GBlodgett Aug 10 '18 at 02:14

0 Answers0