疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

android开发—连连看开发技巧(17)


 

两个转折点的连接
         两个转折点的连接又是最复杂的一种连接情况,因为两个转折点又可分为如下几种情况:
         1、p1、p2位于同一行,不能直接相连,就必须有两个转折点,分向上与向下两种连接情况。
         2、p1、p2位于同一列,不能直接相连,也必须有两个转折点,分向左与向右两种连接情况。
         3、p2在p1的右下角,有六种转折情况。
         4、p2在p1的右上角,同样也有六种转折情况。
注意:对于p2位于p1的左上角、左下角的情况,程序同样只要把p1、p2的位置互换即可。
对于上面4种情况,同样需要分别进行处理:
 
同一行不能直接相连
         p1、p2位于同一行,当它们不能直接相连,因此必须有两个转折点,图18.13显示了这种相连的示意:
同一行不能直接相连
图18.13 同一行不能直接相连
        从图18.13可以看到,当p1与p2位于同一行不能直接相连时,这两个点既可在上面相连,也可以在下面相连,这两种情况都代表它们可以相连,我们先把这两种情况都加入结果中,最后再去计算最近的距离。
        实现时可以先构建一个Map,Map的key为第一个转折点,Map的value为第二个转折点(每种连接情况最多只有两个连接点),如Map的size()大于1,说明这两个Point有多种连接途径,那么程序还需要计算路径最小的连接方式。(未完.摘自[疯狂android讲义].李刚)