#include #include #include #include #define SIZE 19 int jushu=0; int q1=0,q2=0; int k[SIZE][SIZE]; int WANJIA; int count; int X,Y; char* Text; int welcome(void) { printf("\n\n\n\n\n\n"); printf("\t\t\t~*************欢迎进入五子棋游戏*************~\n"); printf("\n\n\n"); printf("\t\t\t~*************制作者:冯程*************~\n"); printf("\n\n\n"); printf("\t\t\t~*************按回车键进入帮助*************~"); while(getchar() == 0); system("CLS"); return 0; } int help(void) { printf("\n\n\n\n\n\n"); printf("\t\t\t~************************帮助**************************~\n"); printf("\n"); printf("\t\t\t~*************p1玩家wasd控制光标,Tab键下棋************~\n"); printf("\n\n\n"); printf("\t\t\t~************p2玩家方向键控制光标,空格键下棋**********~\n"); printf("\n\n\n"); printf("\t\t\t~********************按回车键开始游戏******************~"); while(getchar() == 0); system("CLS"); return 0; } int blackwin(void) { printf("\n\n\n\n\n\n"); printf("\t\t\t~*************恭喜黑方胜利************~\n"); printf("\n\n\n"); printf("\t\t\t~************当前总局数:%d*************~\n",jushu); printf("\n\n\n"); printf("\t\t\t~******黑方胜利:%d局,白方胜利:%d局******~",q1,q2); printf("\n\n\n"); printf("\t\t\t~**********按任意键开启下一局***********~\n"); } int whitewin(void) { printf("\n\n\n\n\n\n"); printf("\t\t\t~*************恭喜白方胜利************~\n"); printf("\n\n\n"); printf("\t\t\t~************当前总局数:%d*************~\n",jushu); printf("\n\n\n"); printf("\t\t\t~******黑方胜利:%d局,白方胜利:%d局******~",q1,q2); printf("\n\n\n"); printf("\t\t\t~**********按任意键开启下一局***********~\n"); } int pingju(void) { printf("\n\n\n\n\n\n"); printf("\t\t\t~***************恭喜平局************~\n"); printf("\n\n\n"); printf("\t\t\t~************当前总局数:%d*************~\n",jushu); printf("\n\n\n"); printf("\t\t\t~******黑方胜利:%d局,白方胜利:%d局******~",q1,q2); printf("\n\n\n"); printf("\t\t\t~**********按任意键开启下一局***********~\n"); } void Chushihua()//棋盘初始化 { int i,j; X=Y=SIZE/2; Text=""; count=0; WANJIA=1; for(i=0;i0&&k[X][Y-i]==WANJIA)w++;else break;//向上检查 for(i=1;i<5;i++)if(X+i0&&k[X-i][Y]==WANJIA)x++;else break;//向左检查 for(i=1;i<5;i++)if(X+i0&&Y-i>0&&k[X-i][Y-i]==WANJIA)y++;else break;//向左上检查 for(i=1;i<5;i++)if(X+i0&&k[X+i][Y-i]==WANJIA)z++;else break;//向右上检查 for(i=1;i<5;i++)if(X-i>0&&Y+i=5) {return WANJIA;} else if(w>=5) {return WANJIA;} if(x>=5) {return WANJIA;} else if(y>=5) {return WANJIA;} else return 0; } int run()//跑游戏 { jushu+=1; int input; int whichwin; Chushihua(); while(1) { printqipan(); input=getch(); if(input==27) { exit(0); } else if(input==32 ||input==0x0009) { if(Put()) { whichwin=Check(); count++; WANJIA=3-WANJIA; if(whichwin==1) { q1+=1; system("cls"); blackwin(); if (getch()==0xE0) { getch(); } return WANJIA; } else if(whichwin==2) { q2+=1; system("cls"); whitewin(); if (getch()==0xE0) { getch(); } return WANJIA; } else if (count==SIZE*SIZE) { system("cls"); pingju(); if (getch()==0xE0) { getch(); } return 0; } } } else if(input==0xE0) { input=getch(); switch(input) { case 0x4B: X--; break; case 0x48: Y--; break; case 0x4D: X++; break; case 0x50: Y++; break; } if(X<0)X=SIZE-1;//如果光标位置越界则移动到对侧 if(Y<0)Y=SIZE-1; if(X>SIZE-1)X=0; if(Y>SIZE-1)Y=0; } else if(input=='a') { X--; if(X<0)X=SIZE-1;//如果光标位置越界则移动到对侧 if(Y<0)Y=SIZE-1; if(X>SIZE-1)X=0; if(Y>SIZE-1)Y=0; } else if(input=='d') { X++; if(X<0)X=SIZE-1;//如果光标位置越界则移动到对侧 if(Y<0)Y=SIZE-1; if(X>SIZE-1)X=0; if(Y>SIZE-1)Y=0; } else if(input=='s') { Y++; if(X<0)X=SIZE-1;//如果光标位置越界则移动到对侧 if(Y<0)Y=SIZE-1; if(X>SIZE-1)X=0; if(Y>SIZE-1)Y=0; } else if(input=='w') { Y--; if(X<0)X=SIZE-1;//如果光标位置越界则移动到对侧 if(Y<0)Y=SIZE-1; if(X>SIZE-1)X=0; if(Y>SIZE-1)Y=0; } } } int main()//主函数 { system("title 五子棋课程设计-冯程");//设置标题 system("mode con cols=100 lines=64");//设置窗口大小 system("color E5");//设置颜色 welcome(); help(); while(1){//循环执行游戏 run(); } }