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

我是纯鼠标操作的,棋盘是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是左上的坐标,其余的类似,忘高手速度解决下啊
关键在怎么确定最后一步的棋子颜色上,我怀疑我确定的有问题,但就是找不出来
我是根据最后一步棋子的颜色判断谁赢的

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

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

断点可以打在这段代码的开头这句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");
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-10-22
是黑,黑赢;是白,白赢.
第2个回答  2008-10-24
是人人对战的
还是人机的,人机的算法有点恶心?
第3个回答  2008-10-24
现在你知道是这个函数有问题,你可以再确定一下,是前半部分有问题,还是后半部分有问题

断点可以打在这段代码的开头这句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");
}

参考资料:www.BAIDU.COM

五子棋怎么判断输赢啊?
不常下五子棋的人,就会感觉黑先禁手好麻烦,不能临时很好的利用优势去思考。可不可以这样想:1,无禁手对弈中,谁执黑棋先输,判定为执白水平高。2,如果1成立,黑白对弈,六局内没有分出胜负,再禁手。想法基于:无禁手中,黑先胜率高,黑如果获胜,是顺势,守本。换言之,如果白胜,是逆势,计...

五子棋判断输赢、怎么解释。在线等
你只判断了右边没判断左边,和上下边。如果下的为X,Y 颜色的C。先往左减X-1是不是C,如果是判断减2是不是C,直到不是或者X-4还是为C(这时加上本身就是5个C胜利了),如果左边不满X-4计算X+1循环判断,加上左边的累加数是否为4,如果成立则C胜利,如果不成立,则判断上下,同样的沿用左右...

五子棋什么情况下才能算赢了?
五子棋的开局也被称为布局,一般在3~7手左右完成,五子棋的开局十分重要,一般情况下,一局五子棋的着数在20~40着之间,因此,它的开局阶段是十分短暂的,大约在七、八着之间,在这一阶段的争夺中,双方的布局、围堵将对之后的胜负起着关键性的作用,一般黑子以攻为主,白子以防为主。 2、四空摆法 有两头空、边二空...

五子棋必胜技巧口诀
五子棋的口诀:先手要攻,后手要守,以攻为守,以守待攻。攻守转换,慎思变化,先行争夺,地破天惊。守取外势,攻聚内力,八卦易守,成角易攻。阻断分隔,稳如泰山,不思争先,胜如登天。初盘争二,终局抢三,留三不冲,变化万千。多个先手,细算次先,五子要点,次序在前。斜线为阴,直线为阳...

五子棋怎么定输赢
1 、五子棋是两个人之间进行的竞技活动,由于对黑方白方规则不同,黑棋必须先行。2 、五子棋专用盘为 15×15 ,五连子的方向为横、竖、斜。3 、禁手是对局中被判为负的行棋手段。白棋无禁手。4 、在棋盘上以对局双方均不可能形成五连为和棋。5 、在对局中,以在盘上落下的子又拿起来为拔子...

五子棋的启示
1、下五子棋的游戏规则是:黑棋先走。谁先走棋谁有赢的优势,说明先下手为强。2、白棋后走,如果光想着堵截黑棋,不变被动为主动 ,赢的可能性几乎为零,说明人在生活和工作中要有积极主动性,不要让别人牵着鼻子走。3、下棋的过程中 ,在堵截对手路的时候,往往把自己的路也给堵截...

五子棋输赢的分数规则
两个玩家的分数差别大于等于 200 分时,胜负都不计分。五.QQ游戏五子棋的积分级别对应关系 9 级 =-800 8 级 =-700 7 级 =-600 6 级 =-500 5 级 =-400 4 级 =-300 3 级 =-200 2 级 =-100 1 级 =0 1 段 =100 2 段 =200 3 段 =300 4 段 =400 5 段 =500 6 段 =...

五子棋必胜的方法
五子棋的必胜方法如下:第一步先手要攻,后手要守,以攻为守,以守待攻。第二步攻守转换,慎思变化,先行争夺,地破天惊。第三步守取外势,攻聚内力,八卦易守,成角易攻。第四步阻断分隔,稳如泰山,不思争先,胜如登天。第五步初盘争二,终局抢三,留三不冲,变化万千。第六步多个先手,...

五子棋的输赢和谁先走有关系吗
五子棋的输赢和谁先走没有关系。谁先形成5子连线谁获胜。规则 (1)对局双方各执一色棋子。(2)空棋盘开局。(3)黑先、白后,交替下子,每次只能下一子。(4)棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动,不得从棋盘上拿掉或拿起另落别处。(5)黑方的第一枚棋子可下在棋盘任意交叉点上...

下五子棋的技巧口诀
高手对弈很多时候是我们看不懂的,因为他们所追求的是“势”,一种压制住对方而取得压倒性优势的情况,这个时候可能不能简单的杀,但是通过精准的计算可以立即将这种“势”转化为杀。五子精华,一子输赢 有些朋友输了以后说“你成五子了,我也活四了,我只比你差一颗子嘛”。其实五子棋争的就是这一...

相似回答
大家正在搜