【问题标题】:Do you know how to randomly populate a table with an array of pictures?你知道如何用一组图片随机填充表格吗?
【发布时间】:2011-06-03 19:43:27
【问题描述】:

我正在尝试创建一个记忆游戏,但我不知道如何用数组中的图片随机填充我的单元格。我刚刚开始主要针对 iOS 进行 Xcode 编程,并且在 Stack Overflow 上搜索了几天,但似乎找不到答案。要么,要么我真的不明白你们专业人士所说和解释的内容。

哪位好心人可以赐教吗?

【问题讨论】:

  • 我认为您需要更清楚地了解您想要做什么,然后我们才能真正提供帮助。你能描述一下你认为你将拥有的数据是什么样的,以及你认为你想如何在你的视图中呈现它吗?如果您知道这两部分,您可能会找到将它们连接在一起的帮助。

标签: ios iphone random populate


【解决方案1】:

如果您总是拥有相同的元素集,并且只想将它们按随机顺序排列,那么我建议您阅读 Fisher-Yates 改组算法 (http://en.wikipedia.org/wiki /Fisher–Yates_shuffle)。这与您在纸牌游戏中随机化一副​​纸牌或您想要置换的任何其他有限集的过程相同。

【讨论】:

    【解决方案2】:

    此代码将获取一个包含图片的 NSArray,并生成一个包含随机顺序的图片的新数组。然后,您可以保存新数组并在表的数据源中使用它。

    NSArray *pictures; //Array containing all of the pictures to display
    srandomdev();
    NSArray *randomPictures = [pictures sortedArrayUsingComparator:(NSComparisonResult)^(id obj1, id obj2) {
        long val = random();
        if(val & 1) return NSOrderedAscending;
        return NSOrderedSame; //or NSOrderedDescending
    }];
    

    【讨论】:

    • OP:如果我没听错的话,您想创建一个匹配的记忆游戏,让用户从网格中选择两件事,是吗?如果是这样,那么我将创建一个 UIImage 对象的 NSArray,其中包含您想要的所有图块(因此每个 UIImage 有两个,用于匹配),然后使用此代码随机化该数组。然后,您可以按顺序(从左到右,从上到下)遍历网格,将数组中的下一个 UIImage 分配给您所在的任何图块。
    • 是的,这正是我想要的!非常感谢!
    • 您好上面的代码返回一个错误:无效的转换初始化整数'int',预期的块指针。有没有办法解决这个问题?
    • 您可以尝试删除返回类型。编译器可能认为它是一个强制转换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多