我是编程新手,我想学习Swift 3.0。

我一直在尝试编写自己的TicTacToe-Game,但是以某种方式,当我检查获胜者时,布尔回报并不能按我想要的方式工作...

CheckWin()函数如下所示:

func CheckWin() -> Bool {
    if button1.titleLabel?.text == button2.titleLabel?.text && button2.titleLabel?.text == button3.titleLabel?.text && button1.titleLabel?.text != nil    {
        return true
    } else {
        return false
    }
//and so on...


我的问题是,当我单击按钮时,按钮会用“ X”或“ O”填充按钮,然后我通过if语句调用CheckWin()函数。
但是它将Labeltext设置为“ Won!”在下一次之后,我单击一个按钮。而不是立即检查它并将Labeltext设置为“ Won!”。

@IBAction func buttonClick(_ sender: UIButton) {
    if sender.titleLabel?.text == nil {
         if player % 2 == 0 {
              sender.setTitle(playerx, for: UIControlState.normal)
              player += 1  //Adds 1 to the variable player
              turn += 1    //Adds 1 to the variable turn (to check later for a draw)
         } else {
              sender.setTitle(playero, for: UIControlState.normal)
              player += 1
              turn += 1
         }
    }
    if CheckWin() {
        label.text = "Won!"
    }
}


我感谢任何帮助/提示!提前致谢!

(顺便说一句,我知道为每个Button创建一个插座不是一个好主意,但是起初我只是想让这个东西开始工作,然后再开始改进):)

最佳答案

你有:

if player%2==0
{
    sender.setTitle(playerx, for: UIControlState.normal}
    player += 1  //Adds 1 to the variable player
    turn += 1    //Adds 1 to the variable turn (to check later for a draw)
}


请参阅第一行末尾的},而不是)是因为该错误还是您只是为问题而错误地复制了代码?

另外,请确保按钮类型为“自定义”,而不是“系统”。将其更改为“自定义”将使默认的“文本颜色”变为白色,因此将其更改为黑色或其他颜色。

10-07 15:32