1
我一直在用Objective C和Xcode開發一個非常簡單的文本遊戲。它幾乎完成,但我有一個問題,方法停止循環,並要求用戶輸入,而我需要計算機運行循環的其餘部分,我想出的解決方案是運行兩個while循環在同時,一個是邏輯循環,另一個是用戶輸入的循環。我一直在做我的研究,它看起來像使用線程是要走的路,我只是沒有找到一個教程,將打破它在Objective-C中的n00b(我在java中體面,我只是有從未與線程一起工作)。如果有人可以解釋他們,或者將我鏈接到一個非常糟糕的教程,那將是非常棒的。或者如果有人有另一個想法,我對任何事情都是開放的。如何同時運行兩個循環?
必要的代碼(我有一個問題,用了就行了星號的scanf函數):
while(running != 0)
{
if(gameState == 1)
{
if(timeToGenerateNum == true)
{
while(randNumber < 10000000)
{
randNumber = arc4random() % 100000000;
}
NSLog(@"%i", randNumber);
timeToGenerateNum = false;
}
else
{
while(time <= 2500)
{
NSLog(@"Testing");
time++;
******************scanf("%i", &userNum);************************
if(userNum == randNumber)
{
score += time;
time = 0;
timeToGenerateNum = true;
}
}
NSLog(@"Game Over! Your score was %i!", score);
running = 0;
}
}
else if(gameState == 2)
{
NSLog(@"To play, simply type in the number that appears on the screen.");
NSLog(@"But be careful, you only have a short amount of time before GAME OVER!");
NSLog(@"The quicker you type in the number the more score you get!");
NSLog(@"Are you ready to start, if so type '1' and press enter!");
scanf("%i", &gameState);
}
}
當'scanf'對'scanf'設置的var進行測試後,接下來的事情是如何繼續循環的?我認爲你需要考慮重構'if(timeToGenerateNum == true)'給一個函數(讓我們稱之爲'randNumber'),然後你會改變if(userNum == randNumber)'if if(userNum = = randNumber())' – 2012-07-05 21:17:39
@Tom Ingram我需要循環才能繼續,因爲時間還是需要添加,這個遊戲是定時的......代碼在嵌套的while循環內並不完美,因爲我沒有測試它,因爲'scanf'不斷停止循環 – HDAViiRuS 2012-07-05 21:24:49