关于五子棋的判断输赢,高手进

来源:百度知道 编辑:UC知道 时间:2024/06/01 11:02:44
我是纯鼠标操作的,棋盘是30x30的,
void judgewin()
{
int N,n,c,v;
for(n=0,N=-5;N<=5;N++) //水平方向判断
{
c=getpixel(savex+space*N,savey);//取得颜色值
if(c==color&&savex+space*N>lefttop&&savex+space*N<righttop)//如果颜色值相同,就进下一步继续判断
{
n++;
}
else break;
}
if(n>=5)
{
v=getpixel(savex,savey);
cleardevice();
settextstyle(TRIPLEX_FONT,HORIZ_DIR,5);
setcolor(RED);
if(v==BLACK)
outtextxy(200,200,"BLACK WIN");
else if(v==WHITE)
outtextxy(200,200,"WHITE WIN");
}
//else continue;
int q,t,w;
for(n=0,q=-5;q<=5;q++) //竖直方向判断
{
t=getpixel(savex,savey+space*N);
if(t==color&&savey+space*N>lefttop&&savey+space*N<righttop)
{
n++;
}
else break;
}
if(n>=5)
{
w=getpixel(savex,savey);
cleardevice();
settextstyle(TRIPLE

你要把出问题的区域逐步缩小。

现在你知道是这个函数有问题,你可以再确定一下,是前半部分有问题,还是后半部分有问题

断点可以打在这段代码的开头这句if语句上,看看这个时候savex和savey的值是否正确!
if(n>=5)
{
s=getpixel(savex,savey);
cleardevice();
settextstyle(TRIPLEX_FONT,HORIZ_DIR,5);
setcolor(RED);
if(s==BLACK)
outtextxy(200,200,"BLACK WIN");
else if(s==WHITE)
outtextxy(200,200,"WHITE WIN");
}

是黑,黑赢;是白,白赢.

是人人对战的
还是人机的,人机的算法有点恶心?

现在你知道是这个函数有问题,你可以再确定一下,是前半部分有问题,还是后半部分有问题

断点可以打在这段代码的开头这句if语句上,看看这个时候savex和savey的值是否正确!
if(n>=5)
{
s=getpixel(savex,savey);
cleardevice();
settextstyle(TRIPLEX_FONT,HORIZ_DIR,5);
setcolor(RED);
if(s==BLACK)
outtextxy(200,200,"BLACK WIN");
else if(s==WHITE)
outtextxy(200,200,"WHITE WIN");
}