gpt4 book ai didi

ios - 将 while 循环添加到 didMoveToView

转载 作者:行者123 更新时间:2023-11-30 13:10:01 25 4
gpt4 key购买 nike

我正在尝试创建一款回合制游戏,该游戏会一直进行到 13 轮结束。然而,在我创建了一个无限 while 循环(仅在 13 轮后才会中断)之后,场景从未加载。为什么didMoveToView中的代码是在场景显示之前执行的?有办法解决这个问题还是我可能做错了什么?

override func didMoveToView(view: SKView) {
/* Setup your scene here */
view.ignoresSiblingOrder = true
roundFirstCard = Card(key: "2c")
var actions = [SKAction]()
let cards = makeDeck()
for c in cards {
let card = Card(key: c)
card.name = card.key
card.position = CGPointMake(500, 400)
addChild(card)
giveCardToCorrectPlayer(cards.indexOf(c)!, c: card)
actions.append(SKAction.runAction(SKAction.moveTo(getTargetLocationForCard(cards.indexOf(c)!), duration: 1.0), onChildWithName: card.name!))
actions.append(SKAction.waitForDuration(0.05))
}
actions.append(SKAction.waitForDuration(1.0))
playerCardSets = [player1Cards, player2Cards, player3Cards, player4Cards]
self.runAction(SKAction.sequence(actions), completion: {self.spreadCards()})
currentPlayer = 1
while true {}
}

最佳答案

您不需要 while 循环,尤其是当您的场景是圆形时。所以我想你在问题中写的这个场景是你游戏的典型回合。您可以将轮数保存在 NSUserDefaults 中,例如在 AppDelegate 中:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
NSUserDefaults.standardUserDefaults().setInteger(0, forKey: "roundCounter")
NSUserDefaults.standardUserDefaults().synchronize()
return true
}

所以在你的场景中你知道你的回合是什么:

override func didMoveToView(view: SKView) {
/* Setup your scene here */
var roundCounter = NSUserDefaults.standardUserDefaults().integerForKey("roundCounter")
roundCounter += 1 //Start new round
guard let r = roundCounter where r > 13 {
gameOver() //launch gameOver function
return
}
// do your stuff
// save the actual round number
NSUserDefaults.standardUserDefaults().setInteger(roundCounter, forKey: "roundCounter")
NSUserDefaults.standardUserDefaults().synchronize()
}

func gameOver() {
// reset to zero your round counter
NSUserDefaults.standardUserDefaults().setInteger(0, forKey: "roundCounter")
NSUserDefaults.standardUserDefaults().synchronize()
//do your stuff
}

关于ios - 将 while 循环添加到 didMoveToView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38843071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com