В настоящее время я работаю над небольшим приложением Bingo.У меня есть несколько проблем с этим, однако.
Во-первых, у меня есть кнопка, при нажатии которой меняются изображения, показывающие, что эта часть помечена (предназначена для обозначения набранных номеров).У меня есть утверждение if следующим образом:
if BOneButton.isSelected && IOneButton.isSelected && NOneButton.isSelected && GOneButton.isSelected && OOneButton.isSelected {
winConditionLabel.text = "You win!"
func createAlert(_ sender: UIButton) {
let alert = UIAlertController(title: "Bingo!", message: "You win!", preferredStyle: .alert)
let action1 = UIAlertAction(title: "Play Again?", style: .default) { (action) in
self.NewBoardAction(sender)
self.dismiss(animated: true, completion: nil)
}
alert.addAction(action1)
present(alert, animated: true, completion: nil)
}
}
У меня есть несколько проблем с этим.Во-первых, окно оповещения не появится.Я сделал что-то неправильно?(Я впервые пытаюсь использовать Alerts, так что это очень вероятно.) Во-вторых, метка, которую я использовал для проверки того, что программа в первую очередь проходит через оператор if, обновляется только после отмены выбораПоследняя кнопка в ряду.Это основная проблема, которую я пытаюсь исправить прямо сейчас.И, наконец, у меня возникают проблемы с проверкой массива callNumbers (который состоит именно из этого - всех вызываемых номеров), чтобы убедиться, что выбранные номера были вызваны.
У меня изначально былокак-то так:
if BOneButton.isSelected && IOneButton.isSelected && NOneButton.isSelected && GOneButton.isSelected && OOneButton.isSelected && calledNumbers.contains(Int(randomBOne.text)) && calledNumbers.contains(Int(randomIOne.text)) && calledNumbers.contains(Int(randomNOne.text)) && calledNumbers.contains(Int(randomGOne.text)) && calledNumbers.contains(Int(randomOOne.text)) {
// do stuff here
}
Но это не сработает вообще.Есть лучший способ сделать это?Я бы очень признателен за любую помощь!
Относительно проблемы с проверкой массива.Вот код для первой буквы.Другие по сути делают то же самое:
@IBAction func newNumberAction(_ sender: Any) {
// B NUMBERS
let randomLetter = ["B", "I","N","G","O"]
let randomIndex = Int(arc4random_uniform(UInt32(randomLetter.count))) // Gives random number from 0 - 4
if (randomLetter[randomIndex]) == (randomLetter[0]) // if statement for each index/letter possibility {
let randomBIndex = Int(arc4random_uniform(UInt32(listBNumbers.count))) // listBNumbers is the original array that randomizes a number from 1 - 15
if randomBIndex < 1 // makes sure there are still B numbers remaining and if not runs the newNumberAction again {
newNumberAction((Any).self)
} else {
let newBNumber = "\(listBNumbers[randomBIndex])" // creates unique variable for random BNumbers
let combinedNumber = (randomLetter[0]) + newBNumber
var calledBNumbers = [Int]() // creates array for called BNumbers
calledBNumbers.append(Int(newBNumber)!) // adds called B Number into new array
listBNumbers.remove(at: (Int(randomBIndex))) // removes B Number from bank of possible numbers that could be called, this should ensure that no number can be called twice
calledNumbers += calledBNumbers // adds called B Numbers to new array that will be used later to verify BINGO
newNumLabel.text = combinedNumber
// this randomizes the number and combines it with 'B' then displays it in the label's text. This is used to display the next called Number.
}
Я знаю, что приложение работает, проверяя метку, которая дает мне количество переменных в массиве namedNumbers.Опять же, я прошу прощения, что изначально не предоставил достаточно информации.