我正在使用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循环的最佳方法?