swift 在while循环期间取消隐藏并从按钮获取输入iPhone应用程序

cidc1ykv  于 2023-04-19  发布在  Swift
关注(0)|答案(1)|浏览(107)

我正在为iPhone的Swift中构建一个人和电脑玩家的投注功能。我为投注过程启动一个while循环,迭代每个玩家。如果是电脑玩家,则调用自动投注功能。如果是人类玩家,我想取消隐藏动作按钮(下注、检查、弃牌等),并在继续进入下注while循环之前等待来自用户的输入。(下面的简化代码)由于某种原因,取消隐藏按钮从未执行,即使在unhide之后的print语句成功打印。同时,while循环似乎跳过了在继续之前等待用户输入。什么是“正确”的方式来组织这一点,以实现我想做的事情?
感谢您的任何帮助/见解。

listOfPlayers = [computer1, player1, computer2]

while !bettingRoundComplete {
    for player in listOfPlayers {
        if player == computer1 {
            autoBet()
        }
        if player == player1 {
            betButton.isHidden = false
            checkButton.isHidden = false
            var playerFinishedTurn = false
            while !playerFinishedTurn {
                  // wait for player to enter input via buttons (which should be unhidden but are not)
                  // do some things with input
                  // flip playerFinishedTurn flag to true
        }
        if player == computer2 {
            autoBet()
        }
        // if bettingRoundComplete, exit loop (global variable flag triggered within betting functions that are called during while loop execution)
    }
}
5sxhfpxr

5sxhfpxr1#

你对事件驱动的应用程序的工作原理有一个基本的误解。你的应用程序会收到一个事件的通知,比如一个用户操作,运行你的代码来响应这个操作,然后返回并等待其他事情发生。你不能有一个等待用户操作的while循环,因为当你是while循环时,你不会让用户响应。你需要重构你的代码,使其像一个状态机一样,进入“收集用户输入”状态。模式。

相关问题