gpt4 book ai didi

ios - 我正在学习 Swift,我正在创建一个简单的掷骰子应用程序,我似乎找不到代码有什么问题

转载 作者:搜寻专家 更新时间:2023-10-31 22:11:41 25 4
gpt4 key购买 nike

该应用程序的要点很简单,您按下小骰子图像,它会运行一个返回 1-6 之间的随机数的函数,屏幕上的框反射(reflect)了它在骰子上的样子,以及彩色的当您掷骰子时,盒子标签会更新为数字。当我运行该应用程序时,一开始一切看起来都很好。我一按下骰子按钮,randomDiceRoll() 函数就会运行,但是彩色框标签和 UIView 框(反射(reflect)它在骰子)不匹配。再说一次,我只是在学习 Swift,所以请放过我。

代码如下:

import UIKit

class ViewController: UIViewController {

@IBOutlet var upperLeft: UIView!

@IBOutlet var midLeft: UIView!

@IBOutlet var lowerLeft: UIView!

@IBOutlet var middle: UIView!

@IBOutlet var upperRight: UIView!

@IBOutlet var midRight: UIView!

@IBOutlet var lowerRight: UIView!


@IBOutlet var redBox: UILabel!

@IBOutlet var orangeBox: UILabel!

@IBOutlet var yellowBox: UILabel!

@IBOutlet var greenBox: UILabel!

@IBOutlet var blueBox: UILabel!

@IBOutlet var purpleBox: UILabel!



override func viewDidLoad() {
super.viewDidLoad()

redBox.isHidden = true
orangeBox.isHidden = true
yellowBox.isHidden = true
greenBox.isHidden = true
blueBox.isHidden = true
purpleBox.isHidden = true



}

func randomDiceRoll() -> Int {
return Int(arc4random_uniform(6) + 1)
}


func updateLabelWithRoll(roll: Int) {

let diceScore = String(roll)

if redBox.isHidden {

redBox.text = diceScore
redBox.isHidden = false

} else if orangeBox.isHidden {

orangeBox.text = diceScore
orangeBox.isHidden = false

} else if yellowBox.isHidden {

yellowBox.text = diceScore
yellowBox.isHidden = false

} else if greenBox.isHidden {

greenBox.text = diceScore
greenBox.isHidden = false

} else if blueBox.isHidden {

blueBox.text = diceScore
blueBox.isHidden = false

} else if purpleBox.isHidden {

purpleBox.text = diceScore
purpleBox.isHidden = false

} else {

redBox.isHidden = true
orangeBox.isHidden = true
yellowBox.isHidden = true
greenBox.isHidden = true
blueBox.isHidden = true
purpleBox.isHidden = true

}

}



@IBAction func buttonPress(_ sender: Any) {

randomDiceRoll()
updateLabelWithRoll(roll: randomDiceRoll())


if randomDiceRoll() == 1 {

upperLeft.isHidden = true
midLeft.isHidden = true
lowerLeft.isHidden = true
upperRight.isHidden = true
midRight.isHidden = true
lowerRight.isHidden = true
middle.isHidden = false

}

if randomDiceRoll() == 2 {

upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = true
upperRight.isHidden = true
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = true

}


if randomDiceRoll() == 3 {

upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = true
upperRight.isHidden = true
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = false

}


if randomDiceRoll() == 4 {

upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = false
upperRight.isHidden = false
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = true

}

if randomDiceRoll() == 5 {

upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = false
upperRight.isHidden = false
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = false

}

if randomDiceRoll() == 6 {

upperLeft.isHidden = false
midLeft.isHidden = false
lowerLeft.isHidden = false
upperRight.isHidden = false
midRight.isHidden = false
lowerRight.isHidden = false
middle.isHidden = true

}


}




override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

应用加载时:

ViewDidLoad screen, no actions have been performed yet.

按下一个按钮后:

After one button press

按下两次按钮后:

After two button presses

等等..(应用程序只是重复自己)总共会有 6 个彩色标签框。

最佳答案

我认为您的问题是您多次调用 randomDiceRoll() 函数而不是一次并使用结果。每次你调用 randomDiceRoll() 都会返回一个新的随机数,你应该调用一次并将结果保存在内存中以供比较

重构您的代码,以便将函数的结果分配给一个变量并使用该变量进行比较,就像这样

@IBAction func buttonPress(_ sender: Any) {

let score = randomDiceRoll()
updateLabelWithRoll(roll: score)

if score == 1 {
upperLeft.isHidden = true
midLeft.isHidden = true
lowerLeft.isHidden = true
upperRight.isHidden = true
midRight.isHidden = true
lowerRight.isHidden = true
middle.isHidden = false
}

if score == 2 {
upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = true
upperRight.isHidden = true
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = true
}

if score == 3 {
upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = true
upperRight.isHidden = true
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = false
}

if score == 4 {
upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = false
upperRight.isHidden = false
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = true
}

if score == 5 {
upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = false
upperRight.isHidden = false
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = false
}

if score == 6 {
upperLeft.isHidden = false
midLeft.isHidden = false
lowerLeft.isHidden = false
upperRight.isHidden = false
midRight.isHidden = false
lowerRight.isHidden = false
middle.isHidden = true
}
}

我还建议使用 switch 语句而不是多个 if 语句..

@IBAction func buttonPress(_ sender: Any) {

let score = randomDiceRoll()
updateLabelWithRoll(roll: score)

switch score {
case 1:
upperLeft.isHidden = true
midLeft.isHidden = true
lowerLeft.isHidden = true
upperRight.isHidden = true
midRight.isHidden = true
lowerRight.isHidden = true
middle.isHidden = false
case 2:
upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = true
upperRight.isHidden = true
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = true
case 3:
upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = true
upperRight.isHidden = true
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = false
case 4:
upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = false
upperRight.isHidden = false
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = true
case 5:
upperLeft.isHidden = false
midLeft.isHidden = true
lowerLeft.isHidden = false
upperRight.isHidden = false
midRight.isHidden = true
lowerRight.isHidden = false
middle.isHidden = false
case 6:
upperLeft.isHidden = false
midLeft.isHidden = false
lowerLeft.isHidden = false
upperRight.isHidden = false
midRight.isHidden = false
lowerRight.isHidden = false
middle.isHidden = true
default:
break
}
}

关于ios - 我正在学习 Swift,我正在创建一个简单的掷骰子应用程序,我似乎找不到代码有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43426543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com