2012-11-28 46 views
2

我的目標是要設計這樣一個骰子游戲:簡單的骰子滾

卷1個模,如果就此死去,甚至,你會得到一個額外的芯片,你現在可以滾骰子2。如果每一個死亡,你會得到一個額外的骰子,等等...

我的問題是,我想不出如何建立一個通用的方式來這樣做。

最近我雖然對像

  • N = 1
  • 卷N *骰子( 「滾」 會給我一個隨機數),然後檢查其死亡,甚至...

有人可以告訴我最好的方式去嗎? 謝謝

更新 您的意見後,我終於嘗試使用NSMutableArray裏存儲我的骰子值,效果很好,希望,一旦值存儲到我的NSMutableArray,它保持不變,並不能改變,就像我希望它像一個新的擲骰子一樣。 我想這是來自我的隨機數存儲在一個NSNumber,這是不可變的事實? 你們可以請檢查我的代碼...

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) 
{ 
// my int values 
int valueOne = arc4random()%6+1; 
int valueTwo = arc4random()%6+1; 
int valueThree = arc4random()%6+1; 
int valueFour = arc4random()%6+1; 
int valueFive = arc4random()%6+1; 

// Wrapped into objects to add to my array 
NSNumber* diceOne = [NSNumber numberWithInt:valueOne]; 
NSNumber* diceTwo = [NSNumber numberWithInt:valueTwo]; 
NSNumber* diceThree = [NSNumber numberWithInt:valueThree]; 
NSNumber* diceFour = [NSNumber numberWithInt:valueFour]; 
NSNumber* diceFive = [NSNumber numberWithInt:valueFive]; 

// my array called "myDice" 
NSMutableArray* myDice = [[NSMutableArray alloc] initWithCapacity:6]; 

// add the objects 
[myDice addObject:diceOne]; 
[myDice addObject:diceTwo]; 
[myDice addObject:diceThree]; 
[myDice addObject:diceFour]; 
[myDice addObject:diceFive]; 

// Sorting my array 
int i; 
NSNumber *myObject; 

for(i=0;i<[myDice count];i++) 
{ 
    myObject = [myDice objectAtIndex:i]; 
NSLog(@"\n\nyour die %d is %@.",i+1, myObject); 
} 


return 0; 

} 
+0

你必須開發一種樹形邏輯。每片葉片將包含奇數值,並且一旦所有葉片都是奇數。你的遊戲結束!是嗎? –

回答

0

也許這將幫助待着你。

當程序啓動時,你有一個「死」的數組(這可以是一個int或一個死對象)。您「滾動」該死亡,爲陣列中的每個元素生成一個介於1和6之間的隨機數(假設爲6面死亡)。你有一個bool even = true,當你循環訪問數組時,如果一個值是奇數,你就會破壞,如果它迭代而不碰到奇數,則添加另一個死亡並重復。

+0

你好,謝謝你的想法...我會嘗試,我想我需要使用NSMutableArray ... – user1859295

+0

是的,你會有我們NSMutableArray。如果你不需要跟蹤每個芯片的價值,那麼業餘編程器的解決方案會更好一些,但是你提到了一些關於「哪個芯片是平均的」的問題。 –

0

如果我正確理解你的問題,你所需要的只是一個簡單的循環。根本不需要任何高級算法或數組。

int dice=1; //Number of dice being rolled 
BOOL gotOddDice = NO; //Exits the infinite loop when you get an odd dice 
while(gotOddDice==YES) //Creates an infinite loop, which will escape when there's an odd dice 
{ 
    for (int i=0;i<dice;i++) 
    { 
     int rolledNum = rollDice(); //Function of getting a random number from 1 - 6 
     if (rolledNum%2==1) //If the rolled dice is odd 
      gotOddDice = YES; 
    } 
    dice++; //Add another dice 
} 
+0

你好。謝謝你的回答。這聽起來可能就像我需要的一樣。我試圖在嘗試之前完全理解它。也許你可以評論一下嗎? – user1859295