且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

连连看.NET 1.41 发布(改造路径提示,提供算法源码)

更新时间:2022-08-20 20:49:44

连连看.NET 1.41 版本下载 (源码在本文内)

除路径提示外,其他未做任何改变,可能播放音乐列表有问题,暂时不做修正了,大不了关一下再开吧;

关于修正路径提示:
本来写这个游戏是为了做个迷宫求解的算法,结果被做成这个了;一直路径绘制还是用的寻路的算法,今天改了改,改成实际的连线路径,因为有2位说过寻路路径太不顺眼;

关于源码:
我相信真正的开发人员是不屑一顾的,毕竟这些只是很基本的一些算法罢了,关于我先前写了两片笔记『连连看路径求解的算法』『"连连看"算法笔记』,如果肯动手的估计已经做好了,实在思路不清楚的可以阅读我的代码,我加了详细的注解,包括考虑绘图的时候图块的安排;

开发记录:
连连看.net到今天为止,我已经努力满足了大多数用过的朋友的要求,如果还有什么不满意的,只能说我尽力了;连连看的核心无非就是寻折点(这个不同于寻路),具体的实现可以看到关键的方法“CheckOneCorner”函数,它是寻找一个折点的目标,关于折点换算说出来是很简单的,还是看『连连看路径求解的算法』一文,这个代码就是它的翻译体。如果有兴趣做做看,建议还是自己去想,自己做才能懂得更多;


以下是源码,可以判断两点是否在2折范围内,并记录路径点,2折的时候输出路径时取最短路径

连连看.NET 1.41 发布(改造路径提示,提供算法源码)using System;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)using System.Drawing;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)using System.Collections;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)namespace LLK.AI
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)/**//// <summary>
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 连连看的连线算法
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 作者:随飞
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 编写日期:2005-6-6
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 首先是 x to x ,这个是横向比较直连
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 然后是 y to y ,这个是竖向比较直连
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
///
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 然后是 1个折点
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 算法很简单;比如
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 7x3的
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 0001000
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 0000000
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 0000001
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
///
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// p1 是 3,0
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// p2 是 6,2
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
///
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 那么折点是
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 000100x
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 0000000
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 000x001
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 折点1是 6,0 ,折点2是 3,2
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 注意这个值和p1,p2的比较,是不是很简单,折点出来了,就可以比较x/y直线了,如果成立则通过.
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
///
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 2折就复杂一点,在上面都不成立后,
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 一次根据上下左右分别按1折算法再比较即可.
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// </summary>

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)public class TestPath
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)int pathPointCount = 0;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) ArrayList PathRecord = new ArrayList();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)int[,] map = null; //地图
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
Point startPos; //起点
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
Point endPos; //终点
连连看.NET 1.41 发布(改造路径提示,提供算法源码)

连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)public TestPath()连连看.NET 1.41 发布(改造路径提示,提供算法源码){;}
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)public TestPath(Point StartPos,Point EndPos,int[,] Map)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.startPos = StartPos;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.endPos = EndPos;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.map = Map;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private void EmptyPathRecord()
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) PathRecord.Clear();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) PathRecord.TrimToSize();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) PathRecord.Add(this.startPos);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) PathRecord.Add(this.endPos);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool IsEmptyPoint(Point p)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.map[p.X,p.Y]==0;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckHorizontal(Point p1,Point p2)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.CheckHorizontal(p1,p2,false);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckHorizontal(Point p1,Point p2, bool isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查水平,x位移,y相同
连连看.NET 1.41 发布(改造路径提示,提供算法源码)

连连看.NET 1.41 发布(改造路径提示,提供算法源码) Point sp = p1.X<p2.X?p1:p2;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Point ep = p2.X<p1.X?p1:p2;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)for(int x =sp.X+1;x<ep.X;x++)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Add(new Point(x,p1.Y));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)//不可通过
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(map[x,p1.Y]!=0)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return true;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckVertical(Point p1,Point p2)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return CheckVertical(p1,p2,false);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckVertical(Point p1,Point p2, bool isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查垂直,y位移,x相同
连连看.NET 1.41 发布(改造路径提示,提供算法源码)

连连看.NET 1.41 发布(改造路径提示,提供算法源码) Point sp = p1.Y<p2.Y?p1:p2;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Point ep = p2.Y<p1.Y?p1:p2;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)for(int y =sp.Y+1; y<ep.Y; y++)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Add(new Point(p1.X,y));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)//不可通过
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(map[p1.X,y]!=0)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return true;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckOneCorner(Point p1,Point p2)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return CheckOneCorner(p1,p2,true,true);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckOneCorner(Point p1,Point p2, bool isAddPath, bool isClear)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//计算夹角
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
//取起始x
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
Point CrossStart;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Point CrossEnd;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(p1.X<p2.X)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossStart = p1;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossEnd = p2;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)else
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossStart = p2;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossEnd = p1;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//交叉点X
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
//正向
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
Point CrossX ;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//交叉点Y
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
//反向
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
Point CrossY ;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(CrossStart.Y<CrossEnd.Y)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossX = new Point(
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Math.Max(CrossStart.X,CrossEnd.X),
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Math.Min(CrossStart.Y,CrossEnd.Y)
连连看.NET 1.41 发布(改造路径提示,提供算法源码) );
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossY = new Point(
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Math.Min(CrossStart.X,CrossEnd.X),
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Math.Max(CrossStart.Y,CrossEnd.Y)
连连看.NET 1.41 发布(改造路径提示,提供算法源码) );
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)else
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossX = new Point(
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Math.Min(CrossStart.X,CrossEnd.X),
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Math.Min(CrossStart.Y,CrossEnd.Y)
连连看.NET 1.41 发布(改造路径提示,提供算法源码) );
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossY = new Point(
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Math.Max(CrossStart.X,CrossEnd.X),
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Math.Max(CrossStart.Y,CrossEnd.Y)
连连看.NET 1.41 发布(改造路径提示,提供算法源码) );
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查交叉点是否为可通过
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(!this.IsEmptyPoint(CrossX) && !this.IsEmptyPoint(CrossY))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查交叉点X
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.IsEmptyPoint(CrossX))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查横位
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(CrossStart.Y<CrossEnd.Y)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//方向为~|
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.CheckHorizontal(CrossStart,CrossX) && this.CheckVertical(CrossX,CrossEnd))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许清空
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isClear)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.EmptyPathRecord();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Add(CrossX);//记录当前交叉点
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
}

连连看.NET 1.41 发布(改造路径提示,提供算法源码)return (this.CheckHorizontal(CrossStart,CrossX,true) && this.CheckVertical(CrossX,CrossEnd,true));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)//不跳出,留下一点检测
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
}

连连看.NET 1.41 发布(改造路径提示,提供算法源码)else
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//方向为|~
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.CheckHorizontal(CrossX,CrossEnd) && this.CheckVertical(CrossX,CrossStart))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许清空
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isClear)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.EmptyPathRecord();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Add(CrossX);//记录当前交叉点
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
}

连连看.NET 1.41 发布(改造路径提示,提供算法源码)return (this.CheckHorizontal(CrossX,CrossEnd,true) && this.CheckVertical(CrossX,CrossStart,true));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)//不跳出,留下一点检测
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
}

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查交叉点Y
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.IsEmptyPoint(CrossY))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查竖位
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(CrossStart.Y<CrossEnd.Y)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//方向为|_
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.CheckVertical(CrossStart,CrossY) && this.CheckHorizontal(CrossY,CrossEnd))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许清空
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isClear)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.EmptyPathRecord();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Add(CrossY);//记录当前交叉点
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
}

连连看.NET 1.41 发布(改造路径提示,提供算法源码)return (this.CheckVertical(CrossStart,CrossY,true) && this.CheckHorizontal(CrossY,CrossEnd,true));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)else
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//方向_|
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.CheckVertical(CrossEnd,CrossY) && this.CheckHorizontal(CrossY,CrossStart))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许清空
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isClear)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.EmptyPathRecord();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Add(CrossY);//记录当前交叉点
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
}

连连看.NET 1.41 发布(改造路径提示,提供算法源码)return (this.CheckVertical(CrossEnd,CrossY,true) && this.CheckHorizontal(CrossY,CrossStart,true));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false; //全部不成立,留给2次折点检测
连连看.NET 1.41 发布(改造路径提示,提供算法源码)

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckTwoCornerLeft(Point p1,Point p2,bool isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
//清空记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
this.EmptyPathRecord();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)for(int x = p1.X -1; x>-1; x--)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.map[x,p1.Y]!=0)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Add(new Point(x,p1.Y));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//不允许清空
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.CheckOneCorner(new Point(x,p1.Y),p2,false,false))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.CheckOneCorner(new Point(x,p1.Y),p2,isAddPath,false);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckTwoCornerRight(Point p1,Point p2,bool isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
//清空记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
this.EmptyPathRecord();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)for(int x = p1.X +1; x<this.map.GetLength(0); x++)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.map[x,p1.Y]!=0)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Add(new Point(x,p1.Y));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//不允许清空
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.CheckOneCorner(new Point(x,p1.Y),p2,false,false))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.CheckOneCorner(new Point(x,p1.Y),p2,isAddPath,false);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckTwoCornerUp(Point p1,Point p2,bool isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
//清空记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
this.EmptyPathRecord();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)for(int y = p1.Y -1; y>-1; y--)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.map[p1.X,y]!=0)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Add(new Point(p1.X,y));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//不允许清空
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.CheckOneCorner(new Point(p1.X,y),p2,false,false))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.CheckOneCorner(new Point(p1.X,y),p2,isAddPath,false);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckTwoCornerDown(Point p1,Point p2,bool isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
//清空记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
this.EmptyPathRecord();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)for(int y = p1.Y +1; y<this.map.GetLength(1); y++)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.map[p1.X,y]!=0)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//允许记录
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isAddPath)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Add(new Point(p1.X,y));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//不允许清空
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.CheckOneCorner(new Point(p1.X,y),p2,false,false))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.CheckOneCorner(new Point(p1.X,y),p2,isAddPath,false);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private void CopyArrayListTo(ref ArrayList srcAl,ref ArrayList destAl)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) destAl.Clear();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) destAl.TrimToSize();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)foreach(Point p in srcAl)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Point newPnt = new Point(p.X,p.Y);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) destAl.Add(newPnt);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)private bool CheckTwoCorner(Point p1,Point p2)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//取起始x
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
Point CrossStart;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Point CrossEnd;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(p1.X<p2.X)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossStart = p1;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossEnd = p2;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)else
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossStart = p2;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CrossEnd = p1;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//这里为寻找最短路径的算法
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
//方法很简单,因为当前的起点方向不确定,可以选择重复尝试能成功的起点
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
//然后找到路径最少的
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
//测试4次,寻找最短的路径
连连看.NET 1.41 发布(改造路径提示,提供算法源码)

连连看.NET 1.41 发布(改造路径提示,提供算法源码) ArrayList[] backFindPath = new ArrayList[4];
连连看.NET 1.41 发布(改造路径提示,提供算法源码)bool isFind =false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)int nextPathList=0;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)while(nextPathList<4)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) backFindPath[nextPathList] = null;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.CheckTwoCornerUp(CrossStart,CrossEnd,false))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Clear();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.CheckTwoCornerUp(CrossStart,CrossEnd,true);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) backFindPath[nextPathList] = new ArrayList();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CopyArrayListTo(ref this.PathRecord,ref backFindPath[nextPathList]);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) isFind = true;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) nextPathList ++;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.CheckTwoCornerDown(CrossStart,CrossEnd,false))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Clear();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.CheckTwoCornerDown(CrossStart,CrossEnd,true);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) backFindPath[nextPathList] = new ArrayList();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CopyArrayListTo(ref this.PathRecord,ref backFindPath[nextPathList]);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) isFind = true;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) nextPathList ++;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.CheckTwoCornerLeft(CrossStart,CrossEnd,false))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Clear();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.CheckTwoCornerLeft(CrossStart,CrossEnd,true);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) backFindPath[nextPathList] = new ArrayList();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CopyArrayListTo(ref this.PathRecord,ref backFindPath[nextPathList]);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) isFind = true;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) nextPathList ++;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.CheckTwoCornerRight(CrossStart,CrossEnd,false))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.Clear();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.CheckTwoCornerRight(CrossStart,CrossEnd,true);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) backFindPath[nextPathList] = new ArrayList();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CopyArrayListTo(ref this.PathRecord,ref backFindPath[nextPathList]);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) isFind = true;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) nextPathList ++;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//没有结果
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(!isFind)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)break;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//有结果返回
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(isFind)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查起点最小数
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
int minCount = 0;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//记录位
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
int index = 0;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)for(int i=0;i<4;i++)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(backFindPath[i]!=null)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(backFindPath[i].Count>0)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(minCount==0)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) minCount=backFindPath[i].Count;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) index = i;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)else if(backFindPath[i].Count<minCount)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) minCount = backFindPath[i].Count;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) index = i;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//回复属性数据
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
this.PathRecord.Clear();
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.PathRecord.TrimToSize();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) CopyArrayListTo(ref backFindPath[index],ref this.PathRecord);
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return true;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)public bool Execute()
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) pathPointCount = -1;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查目标位置是否一样
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.startPos.X==this.endPos.X && this.startPos.Y==this.endPos.Y)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) pathPointCount = -1;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查为同一横坐标
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.startPos.Y==this.endPos.Y)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.CheckHorizontal(this.startPos,this.endPos))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.EmptyPathRecord();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) pathPointCount = 1;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return (this.CheckHorizontal(this.startPos,this.endPos,true));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查为同一纵坐标
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.startPos.X==this.endPos.X)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.CheckVertical(this.startPos,this.endPos))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.EmptyPathRecord();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) pathPointCount = 1;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return (this.CheckVertical(this.startPos,this.endPos,true));
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查一个折点
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.CheckOneCorner(this.startPos,this.endPos))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) pathPointCount =2;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return true;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)//检查两个折点
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
if(this.CheckTwoCorner(this.startPos,this.endPos))
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) pathPointCount =3;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return true;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return false;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)/**//// <summary>
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 起点坐标
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// </summary>

连连看.NET 1.41 发布(改造路径提示,提供算法源码)public Point StartPosition
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)get
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.startPos;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)set
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.startPos = value;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)/**//// <summary>
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 终点坐标
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// </summary>

连连看.NET 1.41 发布(改造路径提示,提供算法源码)public Point EndPosition
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)get
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.endPos;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)set
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.endPos = value;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)/**//// <summary>
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 地图数据
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// </summary>

连连看.NET 1.41 发布(改造路径提示,提供算法源码)public int[,] MapData
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)get
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.map;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)set
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)this.map = value;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)/**//// <summary>
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 获取折点数
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// </summary>

连连看.NET 1.41 发布(改造路径提示,提供算法源码)public int PathPointCount
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)get
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.pathPointCount;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)/**//// <summary>
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// 获取路径表
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
/// </summary>

连连看.NET 1.41 发布(改造路径提示,提供算法源码)public Point[] PathPointList
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)get
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(this.PathRecord.Count>=0)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) Point[] tmpPointList = new Point[this.PathRecord.Count];
连连看.NET 1.41 发布(改造路径提示,提供算法源码)int i = 0;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)foreach(Point p in this.PathRecord)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) tmpPointList[i] = p;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) i++;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)return tmpPointList;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)else
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return null;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)public ArrayList PathPointArray
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)get
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)return this.PathRecord;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }

连连看.NET 1.41 发布(改造路径提示,提供算法源码)}

连连看.NET 1.41 发布(改造路径提示,提供算法源码)

调用测试,这个测试代码可能版本不符,根据以上类的方法和说明修改测试:

连连看.NET 1.41 发布(改造路径提示,提供算法源码)int[,] map = new int[14,10]
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,0,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,2,0,3,1,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,1,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,1,1,1,1,1,1,1,1,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,1,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,1,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,1,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,1,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,1,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,1,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,1,1,1,1,1,1,1,1,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,1,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,1,0,0,0,0,0},
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){0,0,0,0,0,0,0,0,0,0}
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }
;
连连看.NET 1.41 发布(改造路径提示,提供算法源码) AI_Engine.TestPathing TP = new AI_Engine.TestPathing();
连连看.NET 1.41 发布(改造路径提示,提供算法源码) TP.StartPosition = new Point((int)numericUpDown1.Value,(int)numericUpDown2.Value);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) TP.EndPosition = new Point((int)numericUpDown3.Value,(int)numericUpDown4.Value);
连连看.NET 1.41 发布(改造路径提示,提供算法源码) TP.MapData = this.map;
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
连连看.NET 1.41 发布(改造路径提示,提供算法源码)if(TP.Execute())
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) lbInfo.Text = "连通!";
连连看.NET 1.41 发布(改造路径提示,提供算法源码) AddPathInfo(TP.PathPointList);//绘制路径
连连看.NET 1.41 发布(改造路径提示,提供算法源码)
}

连连看.NET 1.41 发布(改造路径提示,提供算法源码)else
连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码)连连看.NET 1.41 发布(改造路径提示,提供算法源码){
连连看.NET 1.41 发布(改造路径提示,提供算法源码) lbInfo.Text = "不通!";
连连看.NET 1.41 发布(改造路径提示,提供算法源码) }



本文转自suifei博客园博客,原文链接:http://www.cnblogs.com/Chinasf/archive/2005/06/06/169153.html,如需转载请自行联系原作者