标题:五子棋的判断输赢问题 高手救命啊
只看楼主
woaiszh
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-10-22
 问题点数:0 回复次数:5 
五子棋的判断输赢问题 高手救命啊
我是纯鼠标操作的,棋盘是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(TRIPLEX_FONT,HORIZ_DIR,5);   
setcolor(RED);   
if(w==BLACK)   
outtextxy(200,200,"BLACK WIN");   
else if(w==WHITE)   
outtextxy(200,200,"WHITE WIN");   

}   
//else continue;   
int b,d,z;   
for(n=0,b=-5;b<=5;b++) //斜上方向判断   
{   
d=getpixel(savex+space*N,savey-space*N);   
if(d==color&&savex+space*N>lefttop&&savex+space*N<righttop&&savey+space*N>lefttop&&savey+space*N<righttop)   
{   
n++;   
}   
else break;   
}   
if(n>=5)   
{   
z=getpixel(savex,savey);   
cleardevice();   
settextstyle(TRIPLEX_FONT,HORIZ_DIR,5);   
setcolor(RED);   
if(z==BLACK)   
outtextxy(200,200,"BLACK WIN");   
else if(z==WHITE)   
outtextxy(200,200,"WHITE WIN");   

}   
//else continue;   
int h,l,s;   
for(n=0,h=-5;h<=5;h++) //斜下方向判断   
{   
l=getpixel(savex+space*N,savey+space*N);   
if(l==color&&savex+space*N>lefttop&&savex+space*N<righttop&&savey+space*N>lefttop&&savey+space*N<righttop)   
{   
n++;   
}   
else break;   
}   
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");   
}   
//else continue;   
}   

问题是每次都只输出黑色的赢,白色也显示黑色的赢,郁闷啊,高手速度解决下  
问题补充:其中的LEFTTOP等等,是棋盘的左上方坐标,其余的类似,我怀疑是最后一点的坐标上的颜色值取的有问题(我是根据最后一步棋子的颜色判断谁赢的 )
搜索更多相关主题的帖子: 五子棋 输赢 救命 判断 
2008-10-22 12:52
dillon
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-6
得分:0 
if(c==color&&savex+space*N>lefttop&&savex+space*N<righttop)//如果颜色值相同,就进下一步继续判断
应该是这句的问题.你改成这样试下:
if(c==(color&&savex+space*N>lefttop&&savex+space*N<righttop))   (所有的判断)
2008-10-22 13:13
woaiszh
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-10-22
得分:0 
还是不行啊,改了吼还没有落子就直接到输出结果赢了
2008-10-22 13:30
蓝色线段树
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-10-18
得分:0 
恐怕楼主不知道什么是五子棋禁手,
假如你知道的话,你就会知道BCCN是没有多少人写得出五子棋输赢判定的
2008-10-22 14:18
woaiszh
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-10-22
得分:0 
我们不要求禁手的
2008-10-22 14:32
fl1339797263
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-6-6
得分:0 
hhou
2013-06-06 17:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-239812-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.233073 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved