本帖最后由 YiZheng 于 2020-2-19 20:42 编辑
今天不码代码了,怕你们脑子烧坏,就先设计一下算法吧(水印严重,大家将就);
连连看这个游戏无非就是找到两个相同的,然后消除它;
消除得满足两个棋子间连线的拐点不能超过两个;
情况一:X坐标相等,Y坐标相等
也就是说两个相同的在同一排或者同一列
这也分两种情况
第一种:X或Y坐标相等,且相邻
X轴相等,属于在同一列,因为X相等,只需判断第一颗棋子的y轴+1是否等于第二颗棋子,等于即可消除;
Y轴相等,属于在同一行,因为Y相等,只需判断第一颗棋子的X轴+1是否等于第二颗棋子,等于即可消除;
第二种:X或Y坐标相等,不相邻
在同一列,但是中间相隔了两个方块,这个时候就需要加3次1,每加一次1,都要判断当前所处的方块是不是空的,不是空的肯定消除不了
在同一行,但是中间相隔了两个方块,这个时候就需要加3次1,每加一次1,都要判断当前所处的方块是不是空的,不是空的肯定消除不了
情况二:X,Y坐标都不想等
也分两种情况
第一种:一个拐点
这种情况需要向两个方向扫描,分别是向下Y+1,然后向右X+三次1,同样每加一次判断是不是空的,可以看到向下扫描时碰到一个障碍,所以回到起点,开始向右X+三次1,向下Y+1,无障碍到达就说明可以消除了
第二种:两个拐点
这时候需要两颗棋子都分别做向上扫描,到达最高点,就从第一颗棋子做向右扫描,如果有障碍,就向下减一,再做向右扫描,如果到最低点还是没找到路径,那就消除不了
|