您好正在为 iPhone 开发拼图游戏。
在这里,我几乎完成了应用程序,除了查找拼图是否完整。
这里的每一块都是一个UIImageView
,并且它有唯一的标签。
我尝试过使用 xy 坐标,但它没有用,因为用户可以从屏幕上的任何位置开始修复拼图。
那么,知道如何检测图像是否排列正确吗?
编辑:非常感谢最后我使用坐标完成了它。通过跟踪位置和标签。
您好正在为 iPhone 开发拼图游戏。
在这里,我几乎完成了应用程序,除了查找拼图是否完整。
这里的每一块都是一个UIImageView
,并且它有唯一的标签。
我尝试过使用 xy 坐标,但它没有用,因为用户可以从屏幕上的任何位置开始修复拼图。
那么,知道如何检测图像是否排列正确吗?
编辑:非常感谢最后我使用坐标完成了它。通过跟踪位置和标签。
据推测,您有某种“对齐网格”机制,可以在每件靠近时将其精确放置到正确的位置(就像真正的拼图一样有效)。假设这被定义为每个部分的 UIImageView 原点的特定 x,y 坐标。
然后,当每一块都处于正确位置时(捕捉到它的位置),将该块的布尔值“就地”设置为“是”。
当所有部分的“就地”值为“是”时,拼图就完成了。
用 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
沿着这些路线的东西应该可以解决问题!
在这里查看我的问题:检查 UILabels are to each other
它是一样的,除了我问的是标签,但你可以尝试将它与图像一起使用。我很确定有不同的翻译方案
我尝试过使用 xy 坐标,但它没有用,因为用户可以从屏幕的任何位置开始修复它。
你必须选择一个“基础”拼图,并为其他人获取相对坐标。完成检查 - 每件都保持存储的相对位置等于当前位置。似乎,仅此而已。
另一种情况是,如果您想修复拼图,从随机块开始并按部分收集(如撕裂的图像或字母 - 块具有不同的形状)。在这种情况下,对于每个拼图,您必须存储最近的邻居 ID 及其相对位置。如果有两个相邻的部分 - 加入它们。获胜的条件 - 所有棋子的所有邻居都在相对位置。