作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我一直在尝试在 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
集合:
创建一个 @IBOutlet
集合来保存对您的按钮的引用:
@IBOutlet var buttons: [UIButton]!
通过 control 将所有按钮连接到 Storyboard 中的这个@IBOutlet
集合 - 从每个按钮依次拖动到第 1 步中的代码行。
在您的重置函数中,遍历所有按钮并将它们的图像设置为 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/
我是一名优秀的程序员,十分优秀!