2010.10.07:
小更新,补充了main.cpp中的注释,源码重新打包上传了
=====================
很老套,又是连连看哈⊙﹏⊙b汗!
我之前有写过一个连连看算法分析的博客,并用JAVA实现了:
http://hexlee.iteye.com/blog/455257
这次因为有需要,重新又接触到了C++,故抱着学习C++的心态,用C++重新实现了这个算法,结果收获还是挺丰盛的:1.发现原来算法实现上的一个数组越界的BUG
2.判断可穿越条件的实现:JAVA中使用了一个接口,C++中使用了一个函数指针
3.学习了C++中的模板的使用
附件有代码打包,C++新手,代码有什么问题,欢迎指出,感激不尽。
文件说明:
Array2D.h //一个二维数组类的简单实现
Position.h //对应JAVA版中的Point,用来记录2D位置的类
LLKPathFinder.h //LLK算法实现器
main.cpp //测试
编译工具:Eclipse for c/c++
下面贴上关键代码:
template<class T> void llk::LLKPathFinder<T>::find(Position p1, Position p2) {
cout << "Finding road!" << endl;
clearStack(pathNodes);//清空
pathNodes.push(p1);
while (true) {
canConnect = _sameLineCheck(p1, p2, *array);//在同一条线上
if (canConnect)
break;
canConnect = _oneCornerCheck(p1, p2, *array);//有一个拐角
if (canConnect)
break;
canConnect = _towCornerCheck(p1, p2, *array);//有两个拐角
break;
}
if (canConnect) {
pathNodes.push(p2);
printStack(pathNodes);
}
return;
}
分享到:
相关推荐
标题中的"llk.zip_lian.exe_llk_llk.c"提到了一个压缩包文件"llk.zip",其中包含了与"连连看"游戏相关的多个文件。"lian.exe"可能是一个可执行程序,代表了连连看游戏的最终编译版本,而"llk"和"llk.c"可能是游戏的...
QQ连连看是一款深受玩家喜爱的经典休闲游戏,而“LLK.rar_lianliankan_llk_llk.rar”看起来是一个模仿QQ连连看的程序包,可能是由开发者或者爱好者制作的一个克隆版本,旨在帮助学习者理解游戏的基本逻辑和实现方式...
llk.exe
《llk.rar_eclipse 小游戏_llk_游戏 eclipse》是一款基于Java编程语言开发的小游戏,使用了Eclipse集成开发环境(IDE)进行构建。Eclipse是全球开发者广泛使用的开源软件开发平台,尤其在Java应用领域,它以其强大的...
《C++实现连连看游戏详解》 连连看是一款广受欢迎的休闲益智游戏,它考验玩家的眼力和反应速度。本项目"LLK.zip_C++_llk连连"是使用C++编程语言实现的一个连连看游戏,具备了基本的游戏功能,如消除匹配的子项、两...
首先,"MFC_llk.rar" 指示这是一个包含MFC实现的连连看游戏项目。"MFC_MFC_llk_俄罗斯方块_连连看" 提到这个项目可能包含了不止一种游戏,包括连连看和俄罗斯方块,但重点在于MFC的实现。"mfc llk 俄罗斯方块 连连看...
今天,我们将通过分析"LLK.rar_flash按钮_llk_llk.rar_连连看"这个压缩包中的源代码,探讨如何利用Flash技术来创建一个属于自己的连连看游戏。这份源代码不仅包含了游戏的核心逻辑,还涉及到了Flash中的按钮交互设计...
标题中的“llk.rar_llk_llk.rar_连连看vc 6.0”指的是一个名为“llk.rar”的压缩文件,其中包含了与“连连看”游戏相关的源代码,且该版本是基于VC++ 6.0开发的。VC++ 6.0是微软发布的一个经典版的Visual C++集成...
在本项目中,`llk.zip`包含了所有必要的源代码和资源文件,用于构建连连看游戏。 项目中的"QT连连看"部分,意味着游戏的界面和交互是使用Qt的图形组件实现的。Qt提供了如QGraphicsView、QWidget、QPushButton等用于...
OpenCV是一个强大的开源计算机视觉和机器学习库,它支持多种编程语言,如Python、C++等,广泛应用于图像处理、模式识别、视频分析等领域。 游戏的核心是用OpenCV来处理和识别游戏中的图像元素,例如棋盘、棋子、...
总的来说,"llk.rar_flex_flex llk"项目为我们提供了一个学习Flex技术的好机会,特别是对于初学者,通过这样一个实际的项目,可以深入理解Flex的UI设计、事件处理、动画效果和游戏逻辑实现。尽管项目可能在视觉效果...
在这个名为"LLK.rar_llk"的压缩包文件中,包含了一个由开发者自行实现的连连看游戏项目。这个项目不仅是一个有趣的游戏,更是学习和研究游戏开发、算法设计的重要资源。 连连看游戏的基本规则是:在规定的时间或步...
综上所述,"llk.zip_llk连连看"是一个涵盖多方面技术的游戏项目,包括但不限于编程语言基础、数据结构(如图和队列)、搜索算法、用户交互、动画制作、资源管理、游戏逻辑实现等。无论是初学者还是经验丰富的开发者...
【标题】"llk.zip_JAVA连连看_llk_连连看_连连看 java" 指的是一款基于Java编程语言开发的连连看游戏。在Java编程领域,连连看游戏的实现是一个经典的案例,它涵盖了图形用户界面(GUI)设计、事件处理、数据结构和...
【标题】"llk.rar_android_android llk_android连连看_llk" 涉及到的是一个Android平台上的游戏开发项目,特别是一款名为“连连看”的游戏。从标题来看,这应该是一个源码压缩包,提供了完整的Android连连看游戏的源...
在“连连看游戏设计.pdf”文档中,可能包含了具体实现这些算法的细节,包括代码示例、性能分析和实际应用中的优化技巧。阅读这份文档将有助于深入理解寻路算法在连连看游戏中的应用,并能为其他类似游戏提供参考。 ...
在本文中,我们将深入探讨如何使用Win32 API进行游戏开发,特别是在实现“连连看”这一经典游戏的过程中涉及的关键技术和知识点。"LLK(path).7z"是一个包含此类项目的压缩包,里面可能包含了源代码、资源文件和其他...
在这个项目中,我们聚焦于C++编程语言,并结合MFC(Microsoft Foundation Classes)框架来实现。 线性结构是计算机科学中最基础的数据结构之一,它包括数组、链表、队列和栈等。这些数据结构具有共同的特点,即元素...