正解・不正解を判定する

目次

はじめに

前回クイズを表示できるようにしたので、今回は正解・不正解を判定できるようにしていきます。


クイズ画面を作成した時に、回答ボタンに「android:onClick="checkAnswer"」と書きました。

(動画で進めている方は、このステップの動画内で書いていきます。 )


これは「このボタンが押されたら checkAnswer メソッドを呼びます」という意味です。

今回はこの checkAnswer メソッドを追加して、クイズの正解・不正解を判定できるようにします。


クイズの正解・不正解は、画像のようにダイアログを使って表示します。

 


それでは MainActivity.java を開いて始めていきましょう!


動画

Android Studio バージョンについて

動画では Android Studio 3.1.4 を使用していますが 3.6 でも動作確認済みです。

 

 

テキスト

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

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

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

 

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

10問出題したい場合は

static final private int QUIZ_COUNT = 10;

としてください。

注意

出題済みのクイズはquizArrayから削除されていきます。
出題数はquizArrayの要素数を超えない範囲に設定してください。

 

 

2. checkAnswerメソッド

5~36行目を追加します。

 

必要なimport

前回までと同じように「alt + return」で警告を消します。

 

 

追加されるのは、以下3つです。

import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.view.View;

 

どの回答ボタンが押されたかを取得

8行目 Button answerBtn = findViewById(view.getId());
9行目 String btnText = answerBtn.getText().toString();

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

 

正解・不正解の判定

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

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

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

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

 

ダイアログを表示する

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

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

 

23行目からはOKボタンが押された時の処理を書いています。

if (quizCount == QUIZ_COUNT) {
 // 結果画面へ移動
} else {
 quizCount++;
 showNextQuiz();
}

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

QUIZ_COUNT に達していない場合は quizCount に1を足して、再び showNextQuiz メソッドを呼びます。


 

これでクイズを続けて出題できるようになります。



3. エミュレーターで確認

ここまで出来たらエミュレーターでアプリを起動してみてください。

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

もし上手く動かない場合は、コードをもう一度確認してみてください。


Memo

結果画面を作成していないので、5問目終了時のダイアログで「OK」ボタンを押すとアプリが終了されてしまいます。 現時点では問題ないので、このまま進んでください。

 

まとめ

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

次は結果画面を作成していきます。

 

ここまでのコード

コメント

0 コメント