使用UIButton在Swift中按下循环

时间:2015-11-18 03:00:26

标签: xcode swift asynchronous while-loop

我正在使用Swift模拟一个2人玩家Simon在Xcode 7.1中说游戏。我很难理解如何让事情异步或使用线程,所以我认为我正在使用一个使用布尔值的循环来解决它,当按下按钮时允许使用布尔值从false更改为true代码继续。然而,事实证明这不仅是非常错误的,而且直觉上可能非常低效。

按钮操作如下:

@IBAction func P1RedButton(sender: AnyObject) {
    P1RedButton.backgroundColor = UIColor.redColor()
    hasSelectedP1 = true;
    selectP1 = 1
}

用于播放我正在调用循环的方法,该循环只是测试用户内存的回合,以回忆按钮在回放期间显示的内容。

func playCycle(){

        gameOver = false
        var index = 0
        var turn = 1

        while(!gameOver && index < plays){
            if(turn == 1){
                print("Player 1's turn")
                while(!hasSelectedP1){
                   //basically nothing happens here
                   //this runs until user selects a button ( or should )
                }
                if(sequence[index] != selectP1){
                    gameOver = true
                    print("game over because p1")
                }
                turn += 1
            }else{
                print("Player 2's turn")
                while(!hasSelectedP2){
                    //same as above
                }
                if(sequence[index] != selectP2){
                    gameOver = true
                    print("game over because p2")
                }
                turn -= 1
            }
            index += 1
        }
        if(gameOver){
            //reward points to winner
            //quit game
        }
        cycle += 1
        cycleBegin()     // this method is to start "presenting" pattern to memorize
    }

序列是由100个随机数(1,2,3,4)组成的数组,分别代表红色,黄色,绿色,蓝色。

什么是基本上暂停程序执行直到按下按钮而不是使用while循环的最佳方法?

0 个答案:

没有答案