首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

编纂五子棋胜负判定子函数TP时遇到算法困难

2013-01-23 
编写五子棋胜负判定子函数TP时遇到算法困难我是想用两个变量做计数器,分别在列和行扫一遍,但是请问如何判

编写五子棋胜负判定子函数TP时遇到算法困难
我是想用两个变量做计数器,分别在列和行扫一遍,但是请问如何判定五子是相连的?以及如何对斜行的五子相连进行判定?
[解决办法]


enum {
  eStateBlack,
  eStateWhite,
  eStateNull,
};

bool scanRow(pt* pRow,int nPts,int* pIndex){
 int nState=eStateNull;
 int nCnts=0;
 for(int i=0;i<nPts;++i){
  if(pRow[i].state==nState){
   nCnts++;
  }else{
   nCnts=1;
  }
  if(nCnts==5){
   *pIndex=i-5;
  }
 }
}


从左到右的斜行最多2n-1个,从右到左的也是2n-1个,扫描即可.
不过五子棋好像有6个不算和先行者特定点位不能放子的规定.

热点排行