diff --git a/fcnb.cpp b/fcnb.cpp new file mode 100644 index 0000000..cf45526 --- /dev/null +++ b/fcnb.cpp @@ -0,0 +1,382 @@ +#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(); +} +} + diff --git a/fcnb.exe b/fcnb.exe new file mode 100644 index 0000000..3220a8f Binary files /dev/null and b/fcnb.exe differ