1

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

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

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

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

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

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

4

4 回答 4

1

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

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

当所有部分的“就地”值为“是”时,拼图就完成了。

于 2012-10-11T13:00:34.010 回答
0

用 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

沿着这些路线的东西应该可以解决问题!

于 2012-10-11T13:02:13.357 回答
0

在这里查看我的问题:检查 UILabels are to each other

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

于 2012-10-11T13:04:08.413 回答
0

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

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

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

于 2012-10-11T13:26:01.553 回答