4択クイズアプリ(Kotlin)

【Android Studio】Kotlinでつくるクイズアプリ講座 第5回「正解・不正解の判定」

Android Studio Chipmunk | 2021.2.1 での動作確認を完了しました。(2022年5月)

ダイアログのコードを修正しました。(2022年2月)

 

この講座の目次はこちら
 

前回クイズを表示することができたので、今回はクイズの正解・不正解を判定してみましょう。
 

正解・不正解の判定は解答ボタンが押されたときに呼ばれる checkAnswer 関数を使います。

ダイアログを使ってクイズの答えも表示してみましょう。

クイズの答えを表示するダイアログ
 
 


 

動画

準備中

 
 

テキスト

1. クイズの出題数を設定する

まずはクイズを何問出題するかを決めます。

7行目を追加してください。

 

ここではクイズを5問出題するように設定しました。

出題したクイズは quizData 配列から削除するので、出題数は配列の要素数を超えない範囲に設定してください。
 
 

2. checkAnswer 関数

24~46行目を追加します。

 

3・6・7 行目:必要な import

import android.content.DialogInterface
import android.widget.Button
import androidx.appcompat.app.AlertDialog

が必要になります。

AlertDialog は2つの選択肢が出ると思いますが androidx.appcompat.app.AlertDialog を選択して下さい。

android.app と androidx.appcompat.app はどちらもサポートライブラリですが、新しい androidx を使うことが推奨されています。

 

25・26行目:どの解答ボタンが押されたかを取得

val answerBtn: Button = findViewById(view.id)
val btnText = answerBtn.text.toString()

押された解答ボタンを見つけて、そのボタンのテキストを取得しています。
 
 

29~35行目:正解・不正解の判定

30行目では解答ボタンのテキストと rightAnswer が一致するかで正解・不正解を判定しています。

if (btnText == rightAnswer) {
  alertTitle = "正解!"
  rightAnswerCount++
} else {
  alertTitle = "不正解…"
}

正解の場合は、このあと作成するダイアログのタイトルを「正解!」として、正解数をカウントする rightAnswerCount に1を加算します。

不正解の場合は、ダイアログのタイトルを「不正解…」とするだけです。
 
 
 

38行目~:ダイアログを表示する

38行目からはダイアログを作成しています。

まずはタイトル・メッセージ・OKボタンを追加します。

ダイアログの設定
 
 

41~43行目は OK ボタンが押された時に checkQuizCount 関数を呼び出す設定をしています。
 

44行目の setCancelable はダイアログの外側をタップしたときにダイアログを閉じるかどうかを指定しています。

false にしているので OK ボタンを押さないとダイアログを閉じることはできません。
 

ダイアログの表示には DialogFragment を使うべきですが、このクイズでは画面を固定すると想定していること、より簡単に実装することを理由に使用していません。
実装方法は【有料記事】Kotlinでつくるクイズアプリ講座「Warning解消とDialogFragmentの実装」で紹介しています。

 
 

3. checkQuizCount 関数

ダイアログの OK ボタンが押されたときに呼ばれる checkQuizCount 関数を以下のように書きます。

 

最初に設定した出題数 QUIZ_COUNT と quizCount が同じになったら結果画面に移動します。

QUIZ_COUNT に達していない場合は quizCount に1を足して、再び showNextQuiz メソッドを呼ぶことで、クイズを続けて出題できるようになります。
 
 
 

4. countLabel の更新

最後に「Q1」と表示している countLabel を更新しましょう。
 

showNextQuiz 関数に3行目を追加します。

 

クイズ画面を作成した時に strings.xml に

<string name="count_label">Q%d</string>

と書きました。

getString メソッドを使って strings.xml に定義したこの文字列を取得して、第二引数に %d の部分に入れる数値を指定しています。
 
 
 

5. エミュレータで確認

エミュレータでアプリを実行してみて下さい。

正解・不正解の判定が正しく行われ、クイズが連続して出題されるでしょうか?

もし上手く動かない場合は下にサンプルコードを貼ってあるので確認してみてください。
 
 
 

次に行うこと

これでメインのクイズ機能は完成です!

次回からは結果画面を作成していきましょう。

第6回「結果画面の作成」に進む
 

ここまでのコード

MainActivity.kt

 
 
 

Android 開発のための Kotlin 入門講座

Kotlin の入門書や入門講座では「文法を学んでもそれをいつどこで使うのか分からない」「アプリ開発との関連が分からない」ということがよくあります。
 

Android 開発のための Kotlin 入門講座では「Kotlin 文法を学ぶ→アプリ開発する」を繰り返して、合計3つのアプリを開発していきます。

  • とにかく Android アプリを開発してみたい!
  • Android 開発に興味があるけれど、何から始めれば良いかわからない
  • プログラミングに挫折したことがある

という方にお勧めの講座になっています。

この講座でプログラマーへの第一歩を踏み出しましょう
 

 
 

ABOUT ME
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
guest
0 Comments
Inline Feedbacks
View all comments
0
この記事にコメントするx