我正在使用firebase管理我的游戏服务器。游戏需要两端用户的输入。
该应用程序允许玩家玩一个小游戏,其中任一玩家选择随机卡,然后服务器比较两者。但是,当一个玩家在另一个玩家之前选择一张牌时,我需要该应用程序等到收到该值。所以,我需要应用程序“等待”,直到输入一个值,然后应用程序将继续。这样我可以比较任何一个值(玩家1的值和玩家2的值)
这就是我现在正在尝试的方式:
@IBAction func aceOfClubs(_ sender: Any) {
cardSelected(imageString: "aceOfClubs", cardValue: aceOfClubsValue)
}
当玩家按下按钮时,它会运行此功能:
private func cardSelected(imageString: String, cardValue: Int) {
print("card selected")
self.currentPlayerChosenCard.image = UIImage(named: imageString)
setCardValueForPlayer(player: 1, cardValue: cardValue)
var playerOneCardValue = checkCardValue(player: 2)
while playerOneCardValue == 0 {
print("while loop performed")
playerOneCardValue = checkCardValue(player: 2)
}
if playerOneCardValue > 0 {
print("if statement performed")
compareCardValuesForWinner()
commitToNewPhase()
}
}
现在,让我说清楚,问题不在于我在这个功能中使用的功能,它如何倾听其他玩家的价值。目前我现在有一个while循环,一直持续到值改变,但这最终导致应用程序崩溃,因为它产生了如此多的垃圾。
我怎样才能以更好,更有效的方式做到这一点,让我'倾听'并等待其他玩家输入,并让应用程序接收它?换句话说,如何继续使用应用程序等待其他玩家数据?