Dans ce court chapitre, nous allons continuer à développer la logique de jeu dans la classe GameActivity, et plus précisément la gestion du score du joueur : sa comptabilisation et son affichage.
Gestion du nombre de questions
Tout d'abord, c'est à vous de décider combien de questions vous souhaitez proposer à l'utilisateur. Le plus simple consiste à créer un attribut de type int :
private int mRemainingQuestionCount;
Puis d'initialiser sa valeur dans la méthode onCreate() :
mRemainingQuestionCount = 4;
Cette variable vous permettra de déterminer quand arrêter le jeu. Prévoyez au moins deux fois plus de questions dans votre banque de questions, afin d'éviter de toujours voir apparaître les mêmes !
Nous décidons par exemple qu'une partie comprend quatre questions. Il est donc nécessaire d'implémenter une logique permettant d'arrêter le jeu après la quatrième question posée.
La variable mRemainingQuestionCount sera utilisée en tant que compteur pour savoir quand arrêter le jeu. De fait, à chaque fois que l'utilisateur répondra à une question, cette variable sera décrémentée. Tant qu'elle ne sera pas égale à 0, la question suivante sera posée. Sinon, le jeu s'arrête.
Le résultat est le suivant (à implémenter dans la méthode onClick(), après vérification de la réponse) :
mRemainingQuestionCount--;
if (mRemainingQuestionCount > 0) {
mCurrentQuestion = mQuestionBank.getNextQuestion();
displayQuestion(mCurrentQuestion);
} else {
// No question left, end the game
}
Gestion du score
Comptabilisation du score
Cette partie-là est assez simple, et je suis sûr que vous n'auriez pas besoin de moi pour cette partie. Très simplement, il suffit de déclarer une variable de type entier, puis d'incrémenter sa valeur à chaque fois que le joueur saisit une bonne réponse.
Affichage du score
Lorsque le joueur a répondu à toutes les questions, la phase finale de jeu est enclenchée :
Le score est affiché à l'utilisateur dans une boîte de dialogue.
L'écran d'accueil est automatiquement affiché lorsque l'utilisateur clique sur le bouton OK.
La boîte de dialogue utilisée est gérée par la classe AlertDialog. Cette boîte de dialogue est entièrement paramétrable. Sachant que vous êtes encore de jeunes Padawans (bon, je mets le lien Wikipedia à tout hasard, au cas où vous ayez vécu dans un bunker depuis votre naissance), nous allons l'utiliser de la manière la plus standard possible. À savoir : afficher un titre, un message et un bouton.
Voici le code permettant de configurer et d'afficher la boîte de dialogue :
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();
Voici quelques explications :
ligne 1 : il est nécessaire d'utiliser un objet spécifique pour "construire" la boîte de dialogue. C'est la sous-classe Builder qui s'en charge ;
ligne 3 : nous définissons le titre de la boîte de dialogue ;
ligne 4 : nous définissons le texte à afficher dans la boîte de dialogue ;
ligne 5 : nous définissons le texte du bouton à afficher, et fournissons l'implémentation de l'interface permettant de gérer le clic sur le bouton ;
ligne 11 : nous demandons à l'instance de Builder de construire la boîte de dialogue avec les paramètres que nous avons prédéfinis ;
ligne 12 : nous affichons notre belle boîte de dialogue.
Et la ligne 8 dans tout cela ? Eh bien la méthode finish() permet simplement de dire au système : j'en ai terminé avec l'activité courante, arrêtez-la et ramenez-moi à l'activité précédente. Pour faire simple, cela revient à cliquer sur le bouton Back du téléphone.
En résumé
Pour gérer le nombre de questions de votre jeu, créez un attribut de type int et initialisez sa valeur dans la méthode onCreate().
Pour comptabiliser le score d’un joueur, déclarez une variable de type entier et incrémentez sa valeur quand le joueur saisit une bonne réponse.
Vous avez terminé la deuxième partie de ce cours ! Je vous propose maintenant de perfectionner votre application. Mais avant, n'oubliez pas de tester vos connaissances grâce au quiz !