查找五子棋c源代码

这个稍微好一点。我以前从未尝试过它。

/*

连续五次

*/

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

# include & ltgraphics.h & gt

# include & ltbios.h & gt

# include & ltconio.h & gt

#定义左0x4b00

#定义右0x4d00

#向下定义0x5000

#定义高达0x4800

#定义ESC 0x011b

#定义空间0x3920

#定义BILI 20

#定义JZ 4

#定义JS 3

#定义编号19

int box[N][N];

int step_x,step _ y;

int键;

int flag = 1;

void draw _ box();

void draw_cicle(int x,int y,int color);

void change();

void judgewho(int x,int y);

void judge key();

int judger result(int x,int y);

void attention in();

忽略注意力()

{

char ch

窗口(1,1,80,25);

textbackground(浅蓝色);

textcolor(黄色);

clr SCR();

gotoxy(15,2);

Printf("游戏操作规则:");

gotoxy(15,4);

printf("玩法:");

gotoxy(15,6);

Printf("1,按左右上箭头键移动棋子");

gotoxy(15,8);

printf("1。按左、右、上、下键移动棋子”);

gotoxy(15,10);

Printf("2,按空格确定棋子");

gotoxy(15,12);

printf("2。按空格键放置棋子”);

gotoxy(15,14);

Printf("3,禁止按棋盘外空格");

gotoxy(15,16);

printf("3。不要按棋盘外的空格”);

gotoxy(15,18);

Printf("你接受以上游戏规则吗(Y/N)");

gotoxy(15,20);

printf("你接受以上玩法吗?[是/否]:);

while(1)

{

gotoxy(60,20);

ch = getche();

if(ch=='Y'||ch=='y ')

打破;

else if(ch=='N'||ch=='n ')

{

窗口(1,1,80,25);

textbackground(黑色);

textcolor(浅灰色);

clr SCR();

退出(0);

}

gotoxy(51,12);

printf(" ");

}

}

void draw_box()

{

int x1,x2,y1,y2;

setbkcolor(浅蓝色);

setcolor(黄色);

gotoxy(7,2);

printf("左,右,上,下键移动,空格放置,ESC-退出。");

for(x1=1,y1=1,y2 = 18;x 1 & lt;=18;x1++)

行((x1+JZ)*BILI,(y1+JS)*BILI,(x1+JZ)*BILI,(y2+JS)* BILI);

for(x1=1,y1=1,x2 = 18;y 1 & lt;=18;y1++)

行((x1+JZ)*BILI,(y1+JS)*BILI,(x2+JZ)*BILI,(y 1+JS)* BILI);

for(x 1 = 1;x 1 & lt;=18;x1++)

for(y 1 = 1;y 1 & lt;=18;y1++)

box[x 1][y 1]= 0;

}

void draw_circle(int x,int y,int color)

{

setcolor(颜色);

setlinestyle(SOLID_LINE,0,1);

x =(x+JZ)* BILI;

y =(y+JS)* BILI;

circle(x,y,8);

}

void judgekey()

{

int I;

int j;

开关(钥匙)

{

案例左侧:

if(step _ x-1 & lt;0)

打破;

其他

{

for(i=step_x-1,j = step _ y;我& gt=1;我-)

if(框[i][j]==0)

{

draw_circle(step_x,step_y,浅蓝色);

打破;

}

如果(我& lt1)破位;

step _ x = I;

judgewho(step_x,step _ y);

打破;

}

案例权利:

if(step _ x+1 & gt;18)

打破;

其他

{

for(i=step_x+1,j = step _ y;我& lt=18;i++)

if(框[i][j]==0)

{

draw_circle(step_x,step_y,浅蓝色);

打破;

}

如果(i & gt18)破位;

step _ x = I;

judgewho(step_x,step _ y);

打破;

}

案例向下:

if((step_y+1)>18)

打破;

其他

{

for(i=step_x,j = step _ y+1;j & lt=18;j++)

if(框[i][j]==0)

{

draw_circle(step_x,step_y,浅蓝色);

打破;

}

if(j & gt;18)破位;

step _ y = j;

judgewho(step_x,step _ y);

打破;

}

案例向上:

if((step _ y-1)& lt;0)

打破;

其他

{

for(i=step_x,j = step _ y-1;j & gt=1;j -)

if(框[i][j]==0)

{

draw_circle(step_x,step_y,浅蓝色);

打破;

}

if(j & lt;1)破位;

step _ y = j;

judgewho(step_x,step _ y);

打破;

}

案例ESC:

打破;

案例空间:

if(step _ x & gt;=1。& ampstep _ x & lt=18。& ampstep _ y & gt=1。& ampstep _ y & lt=18)

{

if(框[步骤x][步骤y]==0)

{

box[step _ x][step _ y]=标志;

if(判断结果(步骤x,步骤y)==1)

{

声音(1000);

延时(1000);

nosound();

gotoxy(30,4);

if(flag==1)

{

setbkcolor(蓝色);

clear device();

setviewport(100,100,540,380,1);

/*定义图形窗口*/

setfillstyle(1,2);

/*绿色用实心填充*/

setcolor(黄色);

矩形(0,0,439,279);

漫填(50,50,14);

set color(12);

settextstyle(1,0,5);

/*三重笔画字体,横向?5次*/

outtextxy(20,20,“白棋赢了!”);

set color(15);

settextstyle(3,0,5);

/*无衬线字体,水平放大5倍*/

outtextxy(120,120,“白棋赢了!”);

set color(14);

settextstyle(2,0,8);

getch();

closegraph();

退出(0);

}

if(flag==2)

{

setbkcolor(蓝色);

clear device();

setviewport(100,100,540,380,1);

/*定义图形窗口*/

setfillstyle(1,2);

/*绿色用实心填充*/

setcolor(黄色);

矩形(0,0,439,279);

漫填(50,50,14);

set color(12);

settextstyle(1,0,8);

/*三笔画字体,水平放大8倍*/

outtextxy(20,20,“红色胜利!”);

set color(15);

settextstyle(3,0,5);

/*无衬线字体,水平放大5倍*/

outtextxy(120,120,“红色胜利!”);

set color(14);

settextstyle(2,0,8);

getch();

closegraph();

退出(0);

}

}

change();

打破;

}

}

其他

打破;

}

}

无效更改()

{

if(flag==1)

flag = 2;

其他

flag = 1;

}

void judgewho(int x,int y)

{

if(flag==1)

draw_circle(x,y,15);

if(flag==2)

draw_circle(x,y,4);

}

int judger result(int x,int y)

{

int j,k,n1,N2;

while(1)

{

n 1 = 0;

N2 = 0;

/*向左水平计数*/

for(j=x,k = y;j & gt=1;j -)

{

if(框[j][k]= =标志)

n 1++;

其他

打破;

}

/*向右水平计数*/

for(j=x,k = y;j & lt=18;j++)

{

if(框[j][k]= =标志)

n2++;

其他

打破;

}

if(n 1+N2-1 & gt;=5)

{

返回(1);

打破;

}

/*垂直向上*/

n 1 = 0;

N2 = 0;

for(j=x,k = y;k & gt=1;k -)

{

if(框[j][k]= =标志)

n 1++;

其他

打破;

}

/*垂直向下计数*/

for(j=x,k = y;k & lt=18;k++)

{

if(框[j][k]= =标志)

n2++;

其他

打破;

}

if(n 1+N2-1 & gt;=5)

{

返回(1);

打破;

}

/*左上角的数字*/

n 1 = 0;

N2 = 0;

for(j=x,k = y;j & gt=1,k & gt=1;j -,k -)

{

if(框[j][k]= =标志)

n 1++;

其他

打破;

}

/*右下方的数字*/

for(j=x,k = y;j & lt=18,k & lt=18;j++,k++)

{

if(框[j][k]= =标志)

n2++;

其他

打破;

}

if(n 1+N2-1 & gt;=5)

{

返回(1);

打破;

}

/*右上方的数字*/

n 1 = 0;

N2 = 0;

for(j=x,k = y;j & lt=18,k >=1;j++,k -)

{

if(框[j][k]= =标志)

n 1++;

其他

打破;

}

/*左下方的数字*/

for(j=x,k = y;j & gt=1,k & lt=18;j -,k++)

{

if(框[j][k]= =标志)

n2++;

其他

打破;

}

if(n 1+N2-1 & gt;=5)

{

返回(1);

打破;

}

return(0);

打破;

}

}

void main()

{

int gdriver=VGA,gmode = VGAHI

clr SCR();

注意();

init graph(& amp;g driver & amp;gmode," c:\ \ TC ");

/* set write mode(XOR _ PUT);*/

flag = 1;

draw _ box();

{

step _ x = 0;

step _ y = 0;

/*draw_circle(step_x,step_y,8);*/

judgewho(step_x-1,step _ y-1);

{

while(BIOS key(1)= = 0);

key = BIOS key(0);

judge key();

}

而(键!空间与空间。& amp钥匙!= ESC);

}

而(键!= ESC);

closegraph();

}