疯狂java


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

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


 

同一列不能直接相连
         p1、p2位于同一列,当它们不能直接相连,因此必须有两个转折点,图18.14显示了这种相连的示意:
 
同一列不能直接相连
图18.14 同一列不能直接相连
 
         从图18.14可以看到,当p1与p2位于同一列不能直接相连时,这两个点既可在左边相连,也可以在右边相连,这两种情况都代表它们可以相连,我们先把这两种情况都加入结果中,最后再去计算最近的距离。
         实现时可以先构建一个Map,Map的key为第一个转折点,Map的value为第二个转折点(每种连接情况最多只有两个连接点),如Map的size()大于1,说明这两个Point有多种连接途径,那么程序还需要计算路径最小的连接方式。
 
p2位于p1右下角的六种转折情况
p2位于p1右下角时一共可能出现6种连接情况,图18.15到图18.20分别绘制了这6种连接情况:
 
p2位于p1右下角、两个转折点情况1
图18.15 p2位于p1右下角、两个转折点情况1
 
p2位于p1右下角、两个转折点情况2
图18.16 p2位于p1右下角、两个转折点情况2
 
p2位于p1右下角、两个转折点情况2
图18.17 p2位于p1右下角、两个转折点情况3
 
p2位于p1右下角、两个转折点情况4
图18.18 p2位于p1右下角、两个转折点情况4
 
p2位于p1右下角、两个转折点情况4
图18.19 p2位于p1右下角、两个转折点情况5
 
p2位于p1右下角、两个转折点情况6
图18.20 p2位于p1右下角、两个转折点情况6
 

         图18.15到图18.20显示了p2位于p1右下角可能出现的6种连接情形;实际上p2还可能位于p1的右上角,此处可能出现的6种连接情形也与此相似,此处不再详述。(未完.摘自[疯狂android讲义].李刚)