• 20 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 6/21/19

Present the Score to the Player

Log in or subscribe for free to enjoy all this course has to offer!

In this short chapter, we will continue to develop the game logic within GameActivity. More specifically, we'll look at how we track the player's score both for counting it and displaying it.

Managing the Number of Questions

First, it's up to you to decide how many questions you want to ask the user. You can do this by declaring an integer variable:

private int mNumberOfQuestions;

Initialize this value in onCreate() :

mNumberOfQuestions = 4;

This value will help you determine when to end the game. Make sure you have at least twice as many questions in your QuestionBank to avoid repeating questions too frequently.

In our example, we believe a game ends in four questions. So we need to implement the logic that ends the game after the fourth question receives a response.

We will use mNumberOfQuestions as a counter that indicates when to stop the game. Every time the user answers a question, we will decrement this variable. As long as it remains above zero, we will ask the next question. Otherwise, the game stops.

Our logic looks like this:

// ... onClick(), after verifying the user's answer

if (--mNumberOfQuestions == 0) {
    // No questions remaining, end the game
} else {
    mCurrentQuestion = mQuestionBank.getQuestion();
    displayQuestion(mCurrentQuestion);
}

// onClick()...

Managing the Score

Score Tracking

Declare an integer variable and then increment its value each time the player enters a correct answer.

Displaying the Score

When the player has answered all questions, the final phase of play is triggered:

  1. The score is displayed to the user in a dialog box.

  2. We bring the user to the Main screen after they click OK.

The dialog box is handled by the AlertDialog class. This dialog is fully configurable. Knowing that you are still young Padawans, we will use the AlertDialog in the most straight-forward way possible. Namely: display a title, a message, and a confirmation button.

Here is the code which configures and displays our dialog box:

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Well done!")
       .setMessage("Your score is " + mScore)
       .setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finish();
            }
        })
        .create()
        .show();

Let's break this down line-by-line:

  • 01: The nested Builder class helps us create an AlertDialog without any fuss

  • 03: We set the dialog's title

  • 04: We set the text displayed within the dialog box

  • 05: We add a dialog button and attach a listener to handle the user's click

  • 11: We ask the Builder object to finalize our dialog, it returns an AlertDialog object

  • 12: We display the dialog to the user

And line 8? Well the finish() method (belonging to Activity) tells the system: I'm done with the current Activity, stop it, and bring me back to the previous Activity. For example, tapping the Android back button invokes this method to move the user to the previous screen or Activity.

Let's recap!

Android dialog boxes are powerful. As you can see in the documentation, all elements have been parameterized: titles, colors, buttons, display formats, and more.

Example of certificate of achievement
Example of certificate of achievement