今回のテーマはクイズです。日本の各都道府県の形を問題として使用し、アプリを作成する予定です。
成果展示:
ゲームの主な機能は、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を使用して戻る方法を学習し、メモリ負担を減らす予定です。