我正在尝试制作类似于高低游戏的东西。到目前为止,我可以生成一个 1-25 之间的新整数。 我尝试编写一个函数,当您按下“较低”按钮时,它会根据前一个整数检查新整数,如果小于则在下面显示文本“您是正确的”并更新用户得分+1。如果错误,则会显示“您错了”,并且分数将重置为 0。
每当我按下下方按钮时,它都会给我一个新的整数,但分数不会更新,并且不会显示消息。这是我第一次真正尝试这样做,所以请耐心等待:)
降低按钮
@IBAction func lower(sender: AnyObject) {
var newNumber = randomIntBetween(2, high: 26)
var oldNumber: Int?
func lowerNumber() -> Int {
if newNumber <= oldNumber {
correctWrong.text = "You Were Correct!"
score.text = "Score: \(countWin++)"
} else {
correctWrong.text = "You Were Wrong!"
score.text = "Score: \(countLose)"
}
return newNumber
}
randomNumbers.text = "\(newNumber)"
}
随机数函数
func randomIntBetween(low:Int, high:Int) -> Int {
let range = high - (low - 1)
return (Int(arc4random()) % range) + (low - 1)
}
使用的变量/常量
var countWin = 0
let countLose = 0
谢谢
最佳答案
据我所知,您的代码格式是否正确,您有一个嵌套函数,但您没有在函数内部调用它,因此不可能调用函数 lowerNumber()
。您需要像下面的代码一样调用该函数:
@IBAction func lower(sender: AnyObject) {
var newNumber = randomIntBetween(2, high: 26)
var oldNumber: Int?
func lowerNumber() -> Int {
if newNumber <= oldNumber {
correctWrong.text = "You Were Correct!"
score.text = "Score: \(countWin++)"
} else {
correctWrong.text = "You Were Wrong!"
score.text = "Score: \(countLose)"
}
return newNumber
}
let newValue = lowerNumber()
randomNumbers.text = "\(newValue)"
}
尽管如此,嵌套函数是具有名称的闭包,并且可以从其封闭函数中捕获值,因此您需要小心使用它。我推荐 @AirSpeedVelocity 的这篇文章来了解有关闭包及其捕获值的更多信息 A Basic Tutorial on Functions and Closures in Swift
希望这对您有帮助。
关于swift - 检查新整数与前一个整数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38769525/