读书人

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

发布时间: 2013-01-23 10:44:49 作者: rapoo

编写五子棋胜负判定子函数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个不算和先行者特定点位不能放子的规定.

读书人网 >C++

热点推荐