2

我的目标是以这种方式设计一个骰子游戏:

掷 1 个骰子,如果这个骰子是偶数,你会得到一个额外的骰子,你现在可以掷 2 个骰子。如果每个骰子都是偶数,你会得到一个额外的骰子,以此类推......

我的问题是我不知道如何建立一个通用的方法来做到这一点。

最近我虽然关于类似的事情

  • n = 1
  • roll n*dice(“roll”会给我一个随机数)然后检查哪个骰子是偶数...

有人可以告诉我最好的方法吗?谢谢

更新 在您发表评论之后,我终于尝试使用 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;

}
4

2 回答 2

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
}
于 2012-11-28T10:39:26.017 回答
0

也许这会帮助你前进。

当程序启动时,您有一个包含 1 个“die”的数组(可以是 int 或 die 对象)。你“滚动”那个骰子,为数组中的每个元素生成一个介于 1 和 6 之间的随机数(假设是 6 面骰子)。你有一个 bool even = true,当你遍历数组时,如果一个值是奇数,你就会打破,如果它迭代而没有碰到奇数,添加另一个骰子并重复。

于 2012-11-28T10:06:43.053 回答