9.voiddraw_chessboardn(introw,intcol,intchessboard[][MAX_COL]);
10.voiddraw_chessman(inttype,char*tableline);
11.intrandom_create_point(void);
12.voiddraw_menu(void);
13.voidperson_computer_random(void);
14.intis_full(intchessboard[][MAX_COL],introw,intcol);
15.intis_win(intchessboard[][MAX_COL],introw,intcol);
16.voidsave_chess(intchessboard[][MAX_COL],introw,intcol);
17.voidreplay_chess(void);
18.intChooseArrow(intchessboard[][MAX_COL],introw,intcol);
19.
20.intmain(){
21.intchoice;
22.draw_menu();
23.while(1){
24.scanf("%d",&choice);
25.switch(choice){
26.
27.break;
28.case2:
29.person_computer_random();
30.break;
31.case3:
32.replay_chess();
33.break;
34.case4:
35.exit(0);
36.break;
37.default:
38.printf("输入错误,请重新选择\n");
39.}
40.}
41.return0;
42.}
43.//绘制棋盘
44.voiddraw_chessboardn(introw,intcol,intchessboard[][MAX_COL]){
45.for(inti=0;i 46.if(i==0){ 47.for(intj=0;j 48.if(j==0) 49.draw_chessman(chessboard[i][j],"┌"); 50.elseif(j==14) 51.draw_chessman(chessboard[i][j],"┐"); 52.else 53.draw_chessman(chessboard[i][j],"┬"); 54.} 55.printf("\n"); 56.}elseif(i==14){ 57.for(intj=0;j 58.if(j==0) 59.draw_chessman(chessboard[i][j],"└"); 60.elseif(j==14) 61.draw_chessman(chessboard[i][j],"┘"); 62.else 63.draw_chessman(chessboard[i][j],"┴"); 64.} 65.printf("\n"); 66.}else{ 67.for(intj=0;j 68.if(j==0) 69.draw_chessman(chessboard[i][j],"├"); 70.elseif(j==14) 71.draw_chessman(chessboard[i][j],"┤"); 72.else 73.draw_chessman(chessboard[i][j],"┼"); 74.} 75.printf("\n"); 76.} 77.} 78.} 79.//绘制棋子 80.voiddraw_chessman(inttype,char*tableline){ 81.if(type==WHITE) 82.printf("●"); 83.if(type==BLACK) 84.printf("○"); 85.if(type==BLANK) 86.printf("%s",tableline); 87.} 88.//随机算法获取棋子的坐标 89.intrandom_create_point(void){ 90.intpoint; 91.point=rand()%MAX_ROW; 92.returnpoint; 93.} 94.//绘制主菜单 95.voiddraw_menu(void){ 96.printf("******************************\n"); 97.printf("*******欢迎使用五子棋*******\n"); 98.printf("***请选择对战方式***\n"); 99.printf("*2.人-机对战(随机算法)*\n"); 100.printf("*3.复盘*\n"); 101.printf("*4.退出*\n"); 102.printf("******************************\n"); 103.printf("请选择:"); 104.} 105. 106. 107.//判断棋盘是否已满 108.intis_full(intchessboard[][MAX_COL],introw,intcol){ 109.intret=1; 110.for(inti=0;i 111.for(intj=0;j 112.if(chessboard[i][j]==BLANK){//遍历数组,当有一个位置为空,则棋盘不满 113.ret=0; 114.break; 115.} 116.} 117.} 118.returnret; 119.} 120.//判断胜负 121.intis_win(intchessboard[][MAX_COL],introw,intcol){ 122.inti,j; 123.for(i=0;i 124.for(j=0;j 125.if(chessboard[i][j]==BLANK) 126.continue; 127.if(j 128.if(chessboard[i][j]==chessboard[i][j+1]&&chessboard[i][j]==chessboard[i][j+2] 129.&&chessboard[i][j]==chessboard[i][j+3]&&chessboard[i][j]==chessboard[i][j+4]) 130.returnchessboard[i][j]; 131.if(i 132.if(chessboard[i][j]==chessboard[i+1][j]&&chessboard[i][j]==chessboard[i+2][j] 133.&&chessboard[i][j]==chessboard[i+3][j]&&chessboard[i][j]==chessboard[i+4][j]) 134.returnchessboard[i][j]; 135.if(i 136.if(chessboard[i][j]==chessboard[i+1][j+1]&&chessboard[i][j]==chessboard[i+2][j+2] 137.&&chessboard[i][j]==chessboard[i+3][j+3]&&chessboard[i][j]==chessboard[i+4][j+4]) 138.returnchessboard[i][j]; 139.if(i 140.if(chessboard[i][j]==chessboard[i+1][j-1]&&chessboard[i][j]==chessboard[i+2][j-2] 141.&&chessboard[i][j]==chessboard[i+3][j-3]&&chessboard[i][j]==chessboard[i+4][j-4]) 142.returnchessboard[i][j]; 143.} 144.} 145.returnBLANK; 146.} 147.//人机对战 148.voidperson_computer_random(void){ 149.intchessboard[MAX_ROW][MAX_COL]={BLANK}; 150.inti,j; 151.draw_chessboardn(MAX_ROW,MAX_COL,chessboard); 152.for(intstep=1;step<=MAX_ROW*MAX_COL;step++){ 153.if(step%2==1){ 154.printf("请黑棋落子:"); 155.while(1){ 156.scanf("%d%d",&i,&j); 157.if(chessboard[i][j]!=BLANK){ 158.printf("该位置已有棋子,请重新输入\n"); 159.continue; 160.} 161.if(i>=MAX_ROW||j>=MAX_COL||i<0||j<0){ 162.printf("输入超出棋盘范围,请重新输入\n"); 163.continue; 164.} 165.break; 166.} 167.chessboard[i][j]=BLACK; 168.draw_chessboardn(MAX_ROW,MAX_COL,chessboard); 169.if(is_win(chessboard,MAX_ROW,MAX_COL)==BLACK){ 170.printf("黑棋胜"); 171.exit(0); 172.} 173.save_chess(chessboard,MAX_ROW,MAX_COL); 174.}elseif(step%2==0){ 175.while(1){ 176.i=random_create_point(); 177.j=random_create_point(); 178.if(chessboard[i][j]==BLANK) 179.break; 180.} 181.chessboard[i][j]=WHITE; 182.draw_chessboardn(MAX_ROW,MAX_COL,chessboard); 183.if(is_win(chessboard,MAX_ROW,MAX_COL)==WHITE){ 184.printf("白棋胜"); 185.exit(0); 186.} 187.save_chess(chessboard,MAX_ROW,MAX_COL); 188.} 189.} 190.if(is_full(chessboard,MAX_ROW,MAX_COL)==1) 191.printf("棋盘已满"); 192.} 193.//存盘 194.voidsave_chess(intchessboard[][MAX_COL],introw,intcol){