Aujourd’hui les amis, après mon précédent post, nous allons apprendre comment réaliser une application Android de Quiz en utilisant Kotlin.
C’est une simple application qu’on va enrichir au fur et à mesure des vidéos, afin que vous puissiez vraiment mettre les mains dans la patte, je vous conseille fortement de pratiquer avec moi, car c’est avec cela que vous allez vraiment vous améliorer.
Qu’est-ce qu’on vu ?
Sur cette vidéo, nous avons vu plusieurs choses, parmi-elles :
Création d’un projet
Vous remplissez les informations nécessaires, du type votre nom de domaine, le nom de votre application, la compatibilité avec les mobiles…etc, rien de difficile.
Comment créer les contraintes
C’était assez facile, il fallait simplement cliquer sur l’icône ( baguette magique ) et Android Studio s’occupe de créer les contraintes, pas mal non ?
Passer d’une vue à une autre
Pour cela on doit utiliser un Intent, on spécifie le context qui est l’activity elle-même mais aussi l’autre activity à laquelle on va aller qui n’est autre que QuizActivity.
1 2 3 4 |
fun onClickBtnPlay(view:View) { val intent = Intent(this, QuizActivity::class.java) startActivity(intent) } |
Créer une class sous Kotlin et en faire une instance
Ici nous avons fait en sorte de créer une class Quiz avec un constructeur.
1 2 3 4 5 6 7 8 9 10 |
class Quiz(var question: String, var answer1: String, var answer2: String, var answer3: String, var correctAnswerNumber: Int) { fun isCorrect(answerNumber: Int) : Boolean { if (answerNumber == correctAnswerNumber) return true return false } } |
Logique derrière le jeu du quiz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
fun handleAnswer(answerID: Int) { val quiz = quizs.get(currentQuizIndex) if (quiz.isCorrect(answerID)) { numberOfGoodAnswers++ Toast.makeText(this, "+1", Toast.LENGTH_SHORT).show() } else { Toast.makeText(this, "+0", Toast.LENGTH_SHORT).show() } // Pour pouvoir aller à la question suivante currentQuizIndex++ if (currentQuizIndex >= quizs.size) { // Partie terminé var alert = AlertDialog.Builder(this) alert.setTitle("Partie terminé!") alert.setMessage("Tu as eu : " + numberOfGoodAnswers + " bonne(s) réponse(s)") alert.setPositiveButton("OK") { dialogInterface: DialogInterface?, i: Int -> finish() } alert.show() } else { // On continue la partie showQuestion(quizs.get(currentQuizIndex)) } } |
C’est la méthode la plus importante, c’est ici que se déroule toute l’ingéniosité de notre code.
D’abord, au niveau de la ligne 2, on a récupéré l’objet quiz grâce à notre variable globale currentQuizIndex, puis nous procédons à la vérification de la réponse, c’est à dire savoir si la réponse qu’a sélectionner l’utilisateur est correct ou non, pour cela nous donnons l’answerID à notre méthode isCorrect afin de faire la comparison avec l’answerID de l’objet (correctAnswerNumber).
Aprè,s selon la valeur retourner par la méthode isCorrect (true/false), on affiche un message approprié.
A partir de la ligne 15, nous vérifions si l’utilisateur a finis le quiz, si notre variable currentQuizIndex ( après son incrémentation ) est égale au nombre de quizs, alors cela veut forcément dire que nous avons atteint la limite, et on affiche un Alert Dialog à l’utilisateur (qui est juste une sorte de pop-up) afin de lui montrer son score.
Sinon on continue le jeu on appellant la méthode showQuestions.
Voilà, si vous n’avez pas compris quelque chose, n’hésitez à me le demander au niveau des commentaires je me ferai un plaisir de vous répondre.
Pour la prochaine vidéo, je pense fortement qu’on va améliorer notre application afin qu’elle puisse enregistrer les scores, et les afficher à l’utilisateur sous forme de liste.
A la prochaine!
PS : CODE SOURCE
Pingback: Enregistrer des données sur Android avec Kotlin - Technicien Supérieur
Pingback: 2# - Questions Aléatoires - Quiz sur Android avec Kotlin - Tech-Sup
Bonjour je veut savoir si on peut copier tes ligne de code et les coller est que ça marchera ?
Bonjour Daniel,
Oui oui!
Sinon tu peux récupérer le code directement depuis github
Il y a t’il moyen de générer les questions aléatoirement ?
Hello, oui j’ai mis la suite