私は質問と回答の定数配列を持っているクイズアプリを開発しています。回答の選択肢は、対応する質問と同じインデックスを持つことによって質問に関連付けられます(たとえば、回答配列の最初の回答選択肢は、質問配列の最初のインデックスなどになります)。しかし、私は質問配列から質問される質問の選択を無作為化していますが、対応する回答は表示されている正しい質問では表示されません。何が正しい選択肢を持っているかについての最良の方法は、ランダムに選択されて表示される質問に表示されますか?また、クイズが失敗してリセットされるまで、すでに回答済みの質問がランダムに選択されないようにするにはどうすればよいですか?ありがとう。クイズアプリに正しい回答の選択肢が表示されるようにするにはどうすればよいですか?
import UIKit
class ViewController:UIViewController {
//random question generation function
func randomQuestion() {
index = Int(arc4random_uniform(UInt32(questions.count)))
questionLabel.text = questions[index]
}
//costants
let questions = ["Who is Thor's half brother?", "What is the name of Thor's hammer?"]
var answers = [["Atum", "Loki", "Red Norvell", "Kevin Masterson"], ["Mjolinr", "Uru", "Stormbreaker", "Odin's Staff"]]
//variables
var currentQuestion = 0
var rightAnswerBox:UInt32 = 0
var index = 0
//Question Label
@IBOutlet weak var questionLabel: UILabel!
//Answer Button
@IBAction func buttonAction(_ sender: AnyObject) {
if (sender.tag == Int(rightAnswerBox)) {
print ("Correct!")
} else {
wrongSeg()
print ("Wrong!")
}
if (currentQuestion != questions.count)
{
newQuestion()
}
}
override func viewDidAppear(_ animated: Bool)
{
newQuestion()
}
//function that displays new question
func newQuestion()
{
//countdown timer section
randomQuestion()
rightAnswerBox = arc4random_uniform(4)+1
//create a button
var button:UIButton = UIButton()
var x = 1
for index in 1...4
{
//creat a button
button = view.viewWithTag(index) as! UIButton
if (index == Int(rightAnswerBox))
{
button.setTitle(answers[currentQuestion][0], for: .normal)
} else {
button.setTitle(answers[currentQuestion][x], for: .normal)
x += 1
}
}
currentQuestion += 1
randomImage()
}
質問が既に回答された後に質問が繰り返されないようにするために、インデックスを追跡するにはどうすればよいですか? –
をアレイから削除し、新しいアレイをトラバースすることができます。または、それらを回答としてマークし、あなたのランダムな選択で無視することができます。 – scord
また、配列のクラスを操作しやすくするために、Structの代わりにClassを使用するように質問を編集しました。 – scord