【问题标题】:iPhone jigsaw puzzle game completion detectioniPhone 拼图游戏完成检测
【发布时间】:2012-10-16 14:43:11
【问题描述】:

您好,我正在为 iPhone 开发拼图游戏。

到这里我几乎完成了应用程序,除了寻找拼图是否完整。

这里的每一块都是一个UIImageView,并且有唯一的标签。

我尝试过使用 x y 坐标,但它没有用,因为用户可以从屏幕上的任何位置开始修复拼图。

那么,知道如何检测图像是否排列正确吗?

编辑:非常感谢,最后我已经使用坐标完成了。通过跟踪位置和标签。

【问题讨论】:

  • 如何判断用户在拼图游戏中的排列是否正确。
  • 不知道如何将这些部分连接在一起,这有点难以帮助。尝试发布一些您尝试过的代码。
  • @nik:我正在关注你关于拼图的帖子。我使用了 9 个单独的蒙版图像来为 3x3 拼图创建不规则形状。但是我看到的是,当您连接这些部分时,它不会形成原始图像。到处都缺少某些部分。你能指导我正确的方向吗?
  • 是的,如果正确定位,您应该正确地附加图像片段的逻辑。

标签: ios uiimageview coordinates


【解决方案1】:

大概,您有​​某种“对齐网格”机制,可以在每块靠近时将其精确放置到正确的位置(就像真正的拼图一样有效)。假设这被定义为每个部分的 UIImageView 原点的特定 x,y 坐标。

然后,当每一块都处于正确位置时(捕捉到它的位置),将该块的布尔值“就地”设置为“是”。

当所有棋子的 'inPlace' 值为 YES 时,拼图就完成了。

【讨论】:

  • 谢谢,我使用了坐标概念,但不是您在此处指定的方式
  • @nik 你能分享一下你是如何实现它的逻辑吗?
【解决方案2】:

在这里查看我的问题:Check how close UILabels are to each other

除了我问的是标签之外,它是一样的,但你可以尝试将它与图像一起使用。不过我很确定会有不同的翻译方案

【讨论】:

    【解决方案3】:

    我尝试过使用 x y 坐标,但它没有用,因为用户可以从屏幕的任何位置开始修复它。

    您必须选择一个“基础”拼图,并为其他拼图获取相对坐标。完成检查 - 每件都保持存储的相对位置等于当前位置。似乎,仅此而已。

    另一种情况,如果您想修复从随机块开始并按部分收集的拼图(如撕裂的图像或字母 - 块具有不同的形状)。在这种情况下,对于每个拼图,您必须存储最近的邻居 ID 及其相对位置。如果有两个相邻的部分 - 加入它们。获胜的条件 - 所有棋子的所有邻居都在相对位置。

    【讨论】:

      【解决方案4】:

      用 id 标记这些片段怎么样

      每一块都有类似的东西

      JigsawPiece.Id = 1
      

      并像这样标记它们(对于 3x3 拼图);

      -------------
      | 0 | 1 | 2 |
      -------------
      | 3 | 4 | 5 |
      -------------
      | 6 | 7 |   | 
      -------------
      

      将这些片段添加到二维数组中

      class JigsawPuzzle:
          array[3][3] JigsawPiece;
      

      最后通过查看数字是否增加一来检查是否达到了解决方案。

      check_id == 1
      for int i = 0; i<numrows ; i++
        for int j = 0; j<numcols; j++{  
          if i==numrows - 1 and j==numcols-1: break #last one, which should be empty, skip it             
          solved = jigsawpieces[col][row].id == check_id
          check_id += 1
          if !solved: break;
        }
      
      if solved: You solved it!
      

      所有都是伪代码,因为我不知道 ObjC

      按照这些思路应该可以解决问题!

      【讨论】:

        猜你喜欢
        • 2014-09-15
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 2012-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多