菜鸟又来求大神帮忙,看一下这个五子棋判断胜负不起作用
easyx吧
全部回复
仅看楼主
level 11
wxzwsj197950 楼主

#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>
#include<conio.h>
int p1_qipan[20][20]={0};
int p2_qipan[20][20]={0};
int player=1;
void hua_qi_pan(void)
{
initgraph(400,400);
int x=40,y=0;
while(x<=400)
{
line(x,y,x,400);
x+=40;
}
x=0;y=40;
while(y<=400)
{
line(x,y,400,y);
y+=40;
}
}
int judgeWin(int qi_pan[20][20]);
void GameOver(int winPlay)
{
if(winPlay==1)
outtextxy(150,200,"玩家一获胜");
if(winPlay==2)
outtextxy(150,200,"玩家二获胜");
getch();
}
int main(void)
{
hua_qi_pan();
while(1)
{
while(player==1)
{
setfillstyle(RED);
MOUSEMSG m;
m=GetMouseMsg();
if(m.mkLButton==true)
{
if(m.x%40!=0||m.y%40!=0)
{
if(m.x%40<=20)
{
m.x=m.x-m.x%40;
}
if(m.y%40<=20)
{
m.y=m.y-m.y%40;
}
if(m.x%40>20)
{
m.x=m.x-m.x%40+40;
}
if(m.y%40>20)
{
m.y=m.y-m.y%40+40;
}
}
if(p2_qipan[m.x/20][m.y/20]==0)
{
fillcircle(m.x,m.y,18);
p1_qipan[m.x/20][m.y/20]=1;
player=2;
}
}
}
if(judgeWin(p1_qipan))
{
GameOver(1);
}
//////////////////////////////////////////////////////////////////
while(player==2)
{
setfillstyle(BLUE);
MOUSEMSG m;
m=GetMouseMsg();
if(m.mkLButton==true)
{
if(m.x%40!=0||m.y%40!=0)
{
if(m.x%40<=20)
{
m.x=m.x-m.x%40;
}
if(m.y%40<=20)
{
m.y=m.y-m.y%40;
}
if(m.x%40>20)
{
m.x=m.x-m.x%40+40;
}
if(m.y%40>20)
{
m.y=m.y-m.y%40+40;
}
}
if(p1_qipan[m.x/20][m.y/20]==0)
{
fillcircle(m.x,m.y,18);
p2_qipan[m.x/20][m.y/20]=1;
player=1;
}
}
}
if(judgeWin(p2_qipan))
{
GameOver(2);
}
/////////////////////////////////////////////////////////////
}
return 0;
}
int judgeWin(int qi_pan[20][20])
{
for(int x=0;x<=15;x++)
for(int y=0;y<=15;y++)
{
if(qi_pan[x][y]==1 && qi_pan[x+1][y]==1 && qi_pan[x+2][y]==1 && qi_pan[x
+3
][y]==1 && qi_pan[x+4][y]==1)
return 1;
if(qi_pan[x][y]==1 && qi_pan[x][y+1]==1 && qi_pan[x][y+2]==1 && qi_pan[x][y+3]==1 && qi_pan[x][y+4]==1)
return 1;
if(qi_pan[x][y]==1 && qi_pan[x+1][y+1]==1 && qi_pan[x+2][y+2]==1 && qi_pan[x+3][y+3]==1 && qi_pan[x+4][y+4]==1)
return 1;
}
return 0;
}
2013年09月27日 17点09分 1
level 12
这样调试:
int judgeWin(int qi_pan[20][20]) 这个函数执行正确吗?
先在 main 里面手动构造一个 qi_pan[20][20] 的数组,包含连 5 子与没有连 5 子等各种情况,然后直接调用 judgeWin,看看这个函数的返回值是否正确。能确定这个函数的对错,再调试下一步。
2013年09月28日 04点09分 2
我试了横竖斜的最左上角有个子的3种情况,单独测试返回都正确了,不知道为什么放在游戏里面就是不行,难道是我赋值有问题吗?还麻烦大神帮忙看看[乖]
2013年10月06日 07点10分
回复 wxzwsj197950 : 多试几种情况,不要仅仅测试左上角。先确保这个函数没问题,再说别的。
2013年10月06日 09点10分
回复 yangw80 :感谢大神,我自己动手调试发现了问题,原来我格子长度是40一格,我赋值时是除以20了。。。。。。
2013年10月07日 15点10分
1