前言
最近项目要求做一个拼图游戏,然后在网上调研发现大多都是类似华容道的拼图游戏,跟我的需求不太匹配。项目需求是做一款真正可以在手机上玩儿的拼图。下面是我做出来的效果图:
效果图
基本思路
首先要确定每个小方块的类型,即方向,坐标,把方向的类型存在一个数组里面
typedef NS_ENUM(NSUInteger, SCPieceType) {
SCPieceTypeInside = -1, // 凹
SCPieceTypeEmpty = 0, // 平
SCPieceTypeOutside = 1 //凸
};
typedef NS_ENUM(NSUInteger, SCPieceSideType) {
SCPieceSideTypeTop,// 上
SCPieceSideTypeBottom,// 下
SCPieceSideTypeRight,// 右
SCPieceSideTypeLeft,// 左
};
其次,根据方向坐标画出每个方块的路径
以上坐标是UI给的,是画图的关键,如果有更好的方法欢迎提出。
- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2;
AB是第一条线段,A既是起点也是控制点1,d是控制点2,BC是第二条线段,ef分别是控制点1.2。通过这6个点加上坐标的旋转平移就能得到上面的图形了。
最后根据路径对图片进行切割
注意
1.每个方向的位置要确定好,一错则全错
2.初始图片需要做处理
demo
https://github.com/SuyChen/SCJigsawPuzzle 欢迎大家找bug,并提出优化意见,谢谢!