我是斯威夫特的业余爱好者,我一直在尝试做一个井字游戏。因此,我想知道是否有任何方法可以使用按钮标记来比较按钮图像。
提前致谢。
答案 0 :(得分:0)
我认为有更好的方法可以解决这个问题。
请勿尝试比较按钮的图像。相反,你应该做的是创建一个模型。模型基本上代表了一个更复杂的系统,具有更简单的数据结构。
在一个井字游戏中,你可以创建这样一个枚举,而不是处理按钮:
enum SqaureContent {
case empty, nought, cross
}
您的模型将是SqaureContent
:
var gameBoard: [[SquareContent]] = [
[.empty, .empty, .empty],
[.empty, .empty, .empty],
[.empty, .empty, .empty]
]
当用户点击按钮时,视图控制器可以通过设置按钮的图像并将模型中的值设置为.cross
来处理点击。这样,您可以将模型与按钮(“视图”)同步。
然后,您可以在模型上执行所有操作,而不是按钮。
然后您可以比较这样的值:
if gameBoard[0][0] == gameBoard[1][0] && gameBoard[1][0] == gameBoard[2][0] {
...
}
您知道这与比较按钮图像相同,因为模型和视图是同步的。
以这种方式编写程序的好处是可以避免很多复杂情况。按钮是复杂的对象。他们的图像可以是任何东西,而不仅仅是noughts和crosses。我们应该使用枚举将值限制为3 - .empty
,.nought
,.cross
。
答案 1 :(得分:-1)
是的,您可以像这样比较图像:
if yourCell.ButtonOutlet.currentImage.isEqual(UIImage(named: "yourImageName")) {
} else {
}