【问题标题】:Randomize 4 objects in array in objective-c but I need the count and objects randomized based off a set number [duplicate]在objective-c中随机化数组中的4个对象,但我需要根据一组数字随机化计数和对象[重复]
【发布时间】:2013-06-18 01:55:57
【问题描述】:

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

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

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

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

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

想想老游戏,西蒙。

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

谢谢。

【问题讨论】:

  • 虽然他没有洗牌,但对象可以重复,不必全部都在场。

标签: objective-c nsarray


【解决方案1】:

试试这样的:

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];
}

【讨论】:

  • 我尝试了后一种随机化解决方案,并且确实随机化了,但我想我可能并不完全清楚。我只使用 4 个 UIImageViews,但我不仅需要将它们随机化,而且我需要在数组中乘以(随机)对这些 ImageViews 的引用数。所以我有 view1、view2、view3 和 view4。我需要将其完全随机化为预先确定的数字。我计划根据用户所在的轮次逐步增加该数字。因此,如果我在第 1 轮中,则该数组中的观看次数上限为 20 次。第二轮?让它成为 30 等等。
  • 所以这 4 个视图需要以随机方式重复。所以说,在第 1 轮,在数组中,它是 view1,view2,view3,view3,view3,view1,view1,view4,view4,view4,view2,view2,view2,view4 等等。然后下一轮,我会需要更多这些。但在两轮之间,我计划有一组 6 个序列。每个序列还将添加,比如说,要突出显示的 X 视图,以便用户以正确的顺序复制点击。谢谢。我希望这会有所帮助。
  • 我想我想出了一个解决方案。我稍后会尝试,如果可行的话,我希望用我的解决方案更新并关闭它
  • @MikeS 好东西,希望你的解决方案有效:)
猜你喜欢
  • 2017-08-01
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 2021-06-24
  • 2019-01-31
  • 1970-01-01
相关资源
最近更新 更多