gpt4 book ai didi

Swift - 如何重置标记的图像,例如 "game board"?

转载 作者:可可西里 更新时间:2023-11-01 01:19:31 25 4
gpt4 key购买 nike

我一直在尝试在 Tic Tac Toe 棋盘游戏上重置标记图像,但无法弄清楚如何在设置后更改各个“方 block ”。我已经进行了搜索,但似乎找不到任何相关信息。

我对整个板使用一个操作按钮,带有 9 个标记图像方 block (每个方 block 一个)。它们都链接到同一个 IBAction。当我按下一个方 block 时,我会交替显示交叉或空白图像。然后我想有一个单独的操作按钮,我可以在其中重置板并再次播放。我如何将方 block 恢复到它们的原始状态(即什么都不显示)?

let nought = UIImage(named: "nought.png") as UIImage!
let cross = UIImage(named: "cross") as UIImage!
var noughtArray = [false, false, false, false, false, false, false, false, false]
var crossArray = [false, false, false, false, false, false, false, false, false]
var whichPlayer = true

@IBAction func button(_ sender: Any) {

guard let button = sender as? UIButton else {
return
}

if !crossArray[button.tag] && !noughtArray[button.tag] {

if whichPlayer {

button.setImage(nought, for: .normal)

print("Button \(button.tag + 1) pressed!")

noughtArray[button.tag] = true

if winningCombination(array: noughtArray) {

labelWinner.text = "Winner is Noughts!"

animateWinning()

}

whichPlayer = false

} else {

button.setImage(cross, for: .normal)

print("Button \(button.tag + 1) pressed!")

crossArray[button.tag] = true

if winningCombination(array: crossArray) {

labelWinner.text = "Winner is Crosses!"

animateWinning()

}

whichPlayer = true

}

}

}

非常感谢任何帮助!

最佳答案

您需要在reset 函数中访问所有按钮。为此,您需要创建一个 @IBOutlet 集合:

  1. 创建一个 @IBOutlet 集合来保存对您的按钮的引用:

    @IBOutlet var buttons: [UIButton]!
  2. 通过 control 将所有按钮连接到 Storyboard 中的这个@IBOutlet 集合 - 从每个按钮依次拖动到第 1 步中的代码行。

  3. 在您的重置函数中,遍历所有按钮并将它们的图像设置为 nil:

    @IBAction func reset(_ sender: UIButton) {
    for button in buttons {
    button.setImage(nil, for: .normal)
    }

    // Reset other variables to starting conditions
    naughtArray = Array(repeating: false, count: 9)
    crossArray = naughtArray
    whichPlayer = true
    }

关于Swift - 如何重置标记的图像,例如 "game board"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44591030/

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