LoginSignup
0
0

#12 地図クイズ

Last updated at Posted at 2024-04-20

今回のテーマはクイズです。日本の各都道府県の形を問題として使用し、アプリを作成する予定です。

成果展示:

1.gif

2.gif

ゲームの主な機能は、JapanAreaViewControllerに集約されています。このコントローラーは、地図の表示、問題の更新、回答の検証プロセスを管理します。各地域の名前とそれに対応する画像は、AreaNameという構造体に保存されています。このデータ構造は、データの管理と更新を容易にします。

struct AreaName {
    let kannji: String
    let alpha: String
}

JapanAreaViewController内では、日本の各地域の情報を保存するJapanAreas配列を初期化しました。この配列はビューがロードされる際にランダムにシャッフルされ、ゲームの問題の順番が毎回異なることを保証します。ユーザーが回答を選択するたびに、このコントローラーは回答が正しいかどうかをチェックし、結果に基づいてユーザーインターフェースを更新します。

class JapanAreaViewController: UIViewController {
    @IBOutlet weak var correctCount: UILabel!
    @IBOutlet var answerButton: [UIButton]!
    @IBOutlet weak var wrongCount: UISegmentedControl!
    @IBOutlet weak var image: UIImageView!
    var JapanAreas = [
        // 各都道府県の情報を初期化
    ]

    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationItem.hidesBackButton = true
        JapanAreas.shuffle() // 地図をシャッフル
        reset(country: JapanAreas, correctCount: correctCount, answerButtonIndex: answerButtonIndex, image: image, answerButton: answerButton)
    }
}

reset関数とnextQuestion関数は、インターフェースを更新し、新しい問題を設定するために使用されます。これらの関数はJapanAreasデータから地域を選択し、地図の画像とオプションボタンのテキストを更新します。

func nextQuestion(index: IndexStruct, image: UIImageView!, area: [AreaName], button: [UIButton]!, correctCount: UILabel!) {
    // 次の問題の処理
}

func reset(country: [AreaName], correctCount: UILabel!, answerButtonIndex: IndexStruct, image: UIImageView!, answerButton: [UIButton]!) {
    // UIをリセットする処理
}

まとめ

現在はボタンを使って前のページに戻っていますが、これはメモリに負担をかけるため、次のバージョンではdelegateを使用して戻る方法を学習し、メモリ負担を減らす予定です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0