资源描述:
《连连看程序设计代码.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#pragmaonce//表示坐标轴上的一个点[X,Y]structPoint{ Point():X(-1),Y(-1){} Point(int_x,int_y):X(_x),Y(_y){} Point(constPoint&p):X(p.X),Y(p.Y){} Point&operator=(constPoint&p){ X=p.X; Y=p.Y; return*this; } inlinebooloperator==(constPoint&p) { returnX==p.X&&Y==p.Y; } inlinebooloperator
2、==(Point&p) { returnX==p.X&&Y==p.Y; } inlinebooloperator!=(constPoint&p) { returnX!=p.X
3、
4、Y!=p.Y; } inlinebooloperator!=(Point&p) { returnX!=p.X
5、
6、Y!=p.Y; } intX;//X轴 intY;//Y轴}; TwoPoint其实是对两个点的一层简单的包装。用户需要点击两个点,我就用这个类来包装这两个点,连接两个点,最多可能出现2两个拐点(在需要三条线连接两个点的时候),我们还是可以用TwoPoint
7、来包装这两个拐点,并附带了一些其他的辅助方法。 #pragmaonce//用于记录用户点击了哪两个点 classTwoPoint{ public: TwoPoint(); ~TwoPoint(); //添加点 boolAddPoint(constPoint&p); //点的个数 intCount()const; PointFirst()const; voidFirst(constPoint&p); PointSecond()const; voidSort(); voidClear(); private:
8、 TwoPoint(constTwoPoint&p); TwoPoint&operator=(constTwoPoint&p); Point*first; Point*second; intcount;}; PathRecord将用户点击的两个点击拐点,按顺序连接起来经过的所有的点集合,开始在做的时候主要是为了测试用的。 #pragmaonce//存放连线经过的所有点classPathRecord{ public: //清除集合中所有的元素 voidClear(); voidAddPoint(constPoint&p);//添加一
9、个点 voidAddPointLine(constPoint&first,constPoint&second);//添加两个点确定的直线上所有的点 voidAddPoint(constPoint&first,constPoint¢er1,constPoint&second); voidAddPoint(constPoint&first,constPoint¢er1,constPoint¢er2,constPoint&second); ~PathRecord(); Point*operator[](intindex); intSi
10、ze(); private: vectorpointVector;}; PathFind主要是测试两个点是否能成功连接,练练的核心实现就是他了。 #pragmaonce externDTypeA[row][column];//寻路,主要的逻辑实现 classPathFind{ public: PathFind(); ~PathFind(); boolLeft(constPoint&first,constPoint&second); boolRight(constPoint&first,constPoint&second); b
11、oolTop(constPoint&first,constPoint&second); boolBottom(constPoint&first,constPoint&second); boolCenter(constPoint&first,constPoint&second); boolOneLine(TwoPoint&endPoint); boolOneLine(constPoint&first,con