option1button
option2button
option3button
を作り、それぞれ5%、3%、1%と割り振り、問題に答え切った後に、健康率は〇〇%です!と表示させたいです。
ここで問題があり、普通のクイズアプリと違い正解がないので、調べても出てこなかったのですが、それぞれのoptionbuttoonに%比率を当てはめて、最後の結果に表示させたいです。
また、もう一つが、ユーザーの選んだデータを蓄積させたいです。
かなり大雑把な説明となってしまいすみません。
方法や、他の代替案がありましたらアドバイスお願いします。![イメージ説明](2fc74935288f4f6f14fe3c5eac25135b.png)
できた部分まででいいのでコードを貼ることはできますか?
このままではやりたい事を書いただけになってしまっているので、
どこまでできていて、どこができないかを質問に書いてみてはいただけないでしょうか?
すみません。おっしゃる通りです。
期限が迫っているので焦ってしまいました。
画像を挿入いたしましたので、ご覧ください。
追記ありがとうございます!
今出てるエラーを解決すればよろしいのでしょうか?
ひとまず出ているエラーは配列の要素数よりも指定したインデックスよりも大きくなってしまっているので発生しているので、一度配列の要素数など確認してはどうでしょうか?
画像をみた感じインデックスが19までの配列に20を指定しているのが原因なんじゃないかなと...
あとできればソースコードは画像ではなく文字で入力していただけませんか?
マークダウン形式が使えるので、以下のようにすれば上手く貼ることができると思います。
```Swift
// ここにコード
```
すみません!ほんとでした、無事エラー解消できました、ありがとうございます!!
了解です!
```Swift
//class nextViewController: UIViewController {
// 変数宣言と初期化
var point: Int = 0
var quizNumber: Int = 0
var quizArray: [Quiz] = []
// Storyboard上のパーツについて宣言
@IBOutlet var quizNumberLabel: UILabel!
@IBOutlet var quizTextView: UITextView!
@IBOutlet var option1Button: UIButton!
@IBOutlet var option2Button: UIButton!
@IBOutlet var option3Button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// クイズのセットアップ
setUpQuiz()
// クイズ番号、クイズ、各選択肢の表示
showQuiz()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func setUpQuiz() {
let quiz1 = Quiz(text: "毎日3食食べましたか?", option1:"はい", option2:"時々食べた", option3: "食べていない")
let quiz2 = Quiz(text: "決まった時間にご飯を食べていますか?", option1: "食べている", option2: "時々食べる", option3: "食べていない")
let quiz3 = Quiz(text: "果物を1日1回は食べていますか?", option1: "はい", option2: "時々食べる", option3: "食べていない")
let quiz4 = Quiz(text: "野菜を十分に食べていますか?", option1: "食べている", option2: "日による", option3: "食べていない")
let quiz5 = Quiz(text: "インスタンス食品は食べましたか?", option1: "食べていない", option2: "時々食べた", option3: "よく食べた")
let quiz6 = Quiz(text: "タバコを吸いましたか?", option1: "吸わない", option2: "たまに吸う", option3: "たくさん吸う")
let quiz7 = Quiz(text: "お酒を飲みましたか?", option1: "飲まない", option2: "たまに飲んだ", option3: "飲まない")
let quiz8 = Quiz(text: "運動して体を動かしましたか?", option1: "動かした", option2: "たまに動かした", option3: "動かしていない")
let quiz9 = Quiz(text: "翌日まで疲れが残ることがありますか?", option1: "特にない", option2: "時々ある", option3: "よくある")
let quiz10 = Quiz(text: "食欲がない時がありますか?", option1: "特にない", option2: "時々ある", option3: "よくある")
let quiz11 = Quiz(text: "原因不明の下痢などが起こりますか?", option1: "特にない", option2: "時々ある", option3: "よくある")
let quiz12 = Quiz(text: "朝スッキリ起きられない時がありますか?", option1: "特にない", option2: "時々ある", option3: "よくある")
let quiz13 = Quiz(text: "中々寝付けないことがありますか?", option1: "特にない", option2: "時々ある", option3: "よくある")
let quiz14 = Quiz(text: "何事にもやる気が起きにくいですか?", option1: "特にない", option2: "時々ある", option3: "よくある")
let quiz15 = Quiz(text:"色々なことに関心が薄くなりますか?", option1: "特にない", option2: "時々ある",option3: "よくある")
let quiz16 = Quiz(text: "体調を崩しやすいですか?", option1: "特にない", option2: "時期による", option3: "よく崩す")
let quiz17 = Quiz(text: "未来について妙に焦ることがありますか?", option1: "特にない", option2: "時々ある", option3: "よくある")
let quiz18 = Quiz(text: "些細なことで腹が立つことがありますか?", option1: "特にない", option2: "時々ある", option3: "よくある")
let quiz19 = Quiz(text: "肌荒れの症状が出ることがありますか?", option1: "特にない", option2: "少し荒れる", option3: "よく荒れる")
let quiz20 = Quiz(text: "睡眠は十分に取れていますか?", option1: "取れている", option2: "日による", option3: "取れていない")
quizArray.append(quiz1)
quizArray.append(quiz2)
quizArray.append(quiz3)
quizArray.append(quiz4)
quizArray.append(quiz5)
quizArray.append(quiz6)
quizArray.append(quiz7)
quizArray.append(quiz8)
quizArray.append(quiz9)
quizArray.append(quiz10)
quizArray.append(quiz11)
quizArray.append(quiz12)
quizArray.append(quiz13)
quizArray.append(quiz14)
quizArray.append(quiz15)
quizArray.append(quiz16)
quizArray.append(quiz17)
quizArray.append(quiz18)
quizArray.append(quiz19)
quizArray.append(quiz20)
}
//クイズを各パーツに表示
func showQuiz() {
//クイズ番号、クイズ、各選択肢の表示
quizNumberLabel.text = String(quizNumber + 1) + "問目"
quizTextView.text = quizArray[quizNumber].text
option1Button.setTitle(quizArray[quizNumber].option1 , for:.normal )
option2Button.setTitle(quizArray[quizNumber].option2, for: .normal)
option3Button.setTitle(quizArray[quizNumber].option3, for: .normal)
}
//クイズのデータをリセット
func resetQuiz() {
point = 0
quizNumber = 0
self.showQuiz()
}
//クイズをアップデート
func updataQuiz() {
if quizNumber == 19 {
self.performSegue(withIdentifier: "toSecond", sender: nil)
} else {
quizNumber = quizNumber + 1
showQuiz()
}
}
@IBAction func pushOption1Button() {
updataQuiz()
}
@IBAction func pushOption2Button() {
updataQuiz()
}
@IBAction func pushOption3Button() {
updataQuiz()
}
}
```
```Swift
//class Quiz: NSObject {
// クイズ1つの問題がどんな値を扱うかうか
var text: String
var option1: String
var option2: String
var option3: String
// Initializer(イニシャライザ) = 初期化処理
init(text: String, option1: String, option2: String, option3: String) {
self.text = text
self.option1 = option1
self.option2 = option2
self.option3 = option3
}
}
```
1つ目がviewcontrollerのコードで2つ目がNSobjectのクイズコードです。
point = 0 の変数をうまく利用できないかと考得ているのですが、活用方法が見出せません。
なるほど、詳しい情報ありがとうございます!
回答するので少々お待ちください。
ひとまずここに書いていただいた情報やコードなどを質問の方にも記述していただけませんか?
回答1件
あなたの回答
tips
プレビュー