C++连连看算法

来源:百度知道 编辑:UC知道 时间:2024/06/05 12:31:19
我刚学C++,还都不太会~快交项目了 我想做个连连看 但是俩个一样的图形消除这个算法实在想不出来~麻烦高人指点一下~简单一点的··说深了 看不懂 体谅一下初学者~谢谢!
真是初学者····这一大篇代码真看不懂 连连看核心算法那朋友~你如果理解的话 能不能给我加点详细注释呢 ~谢谢大家给发你们多 小弟太笨 确实看不懂! c1 ^= c2 ^= c1 ^= c2;这个运算没注释 我怎么能懂·····

连连看消除算法?就是说按两个钮之后看看能不能连?
用FloodFill算法就可以了啊?不提倡枚举转弯路径(即楼下的算法)。

我建议你baidu一下floodfill算法,用这个算法对整个连连看的图形进行填充(当然一个点要拆成上,下,左,右四方向进入的不同情况,填充转弯次数),或者说是广度优先搜索更合适。填充后看看目标点与初始点转弯次数就可以。个人觉得枚举转弯方式较为猥琐。。。(纯个人意见,别介意)

////////////////////////////////////////////////////////////////////////// // LLKAg.h//////////////////////////////////////////////////////////////////////////// 版权所有// 作者:董波// 日期:2008.12.26// 简介:连连看算法//////////////////////////////////////////////////////////////////////////#ifndef _ND_LLKAG_H_ #define _ND_LLKAG_H_#if _MSC_VER > 1000 #pragma once#endif#include <vector> // for/* 约定: 0代表空白,其它编号从1开始向后排。。。*/static const int BLANK_GRID = 0;typedef std::vector< POINT2D > PT2D_VEC;class CLLKAg {public:CLLKAg( int iRow = 9, int iCol = 16 );~CLLKAg();public:// 开始游戏,服务器调用void Start( int iCardNum = 20 );// 获得数据信息,用于客户端渲染,也可用于服务器获得初始化信息后下发void GetState( std::vector<int>& vec ) const;// 客户端调用,从网络数据获取状态 void SetState( const int* pStates, unsigned uSize );//