0

好的,我会尽量让这不像标题那样令人困惑。

我有 4 个 UIImageViews、view1、view1、view3 和 view4。在我正在开发的游戏中,我需要根据玩家的特定难度和深度来随机化它们并随机化计数。

所以我有一个数组,比如说,[currentSequence],它包含这 4 个 uiimageviews。好吧,我需要能够完全随机化它。说,这可能是其中的内容。vie1、view1、vie3、view3、view3、view4、view4、view1、view1、view2 等。

这是一款记忆配对游戏。所以顺序很重要。我需要将这些对象随机化一次并保存,直到玩家进入新一轮并制作新套装时将它们清除。

我还计划在一轮中使用有限数量的序列,例如 6 个。因此,如果我们处于序列 1,将出现的视图可以是 view1、view2、view2、view4。然后序列 2 以相同的顺序开始,但它会添加更多对象。

想想老游戏,西蒙。

现在我只需要一个解决方案来随机化计数和对象,用于一组有限的对象 (4)。

谢谢。

4

1 回答 1

0

尝试这样的事情:

NSUInteger capacity = 20;
NSArray *objects = @[@(1), @(2), @(3), @(4)];
NSMutableArray *randomized = [NSMutableArray arrayWithCapacity:capacity];

for (int i = 0; i < capacity; i++) {
    NSUInteger rnd = floor(arc4random() % 4);
    randomized[i] = objects[rnd];
}

但这不会随机化放置在randomized数组中的对象数量。

要使其随机化,请尝试以下操作:

NSArray *objects = @[@(1), @(2), @(3), @(4)];
NSMutableArray *randomized = [@[] mutableCopy];
NSUInteger terminationUnlikeliness = 10; /* increase to make termination less likely */

for (int i = 0; floor(arc4random() % terminationUnlikeliness) != 0; i++) {
    NSUInteger rnd = floor(arc4random() % 4);
    randomized[i] = objects[rnd];
}
于 2013-06-21T06:01:08.010 回答