目的・役割

解放済みジャンルの問題を3つのプレイモード(ランダム / 順番通り / 続きから)で解いていく画面。

プレイモード

モード動作
ランダム毎回 randomQuestion() で異なる問題
順番通りposition をリセットして1問目から
続きから保存された position から再開

UI 構成

要素種類説明
進捗バーProgressView「N問目 / 全M問」
問題文Textquestion
選択肢ボタンButton×4choices
解説表示Overlay正解/不正解後の explanation
「次の問題へ」Button続く問題があれば

状態

状態表示内容
未回答問題文 + 選択肢
回答後正解強調 + 解説
全問終了結果サマリ画面

遷移

操作遷移先
選択肢タップ同画面(結果表示)
「次へ」同画面(次問題)
終了GenreQuizShopView へ戻る

使用するデータモデル

GenreQuizQuestion {
    let id: String
    let question: String
    let choices: [String]
    let correct: Int
    let explanation: String?
}

GenreProgressService {
    func recordAnswer(genreId: String, questionId: String, correct: Bool)
    func getPosition(genreId: String) -> Int
}

実装メモ

関連

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成