C语言五子棋小游戏实现代码

本文实例为大家分享了C语言实现五子棋小游戏的具体代码,供大家参考,具体内容如下

#include<stdio.h> #include<windows.h> #define ROW 14 #define COL 14 void gotoxy(int x,int y)//形参 {     HANDLE hOut;     COORD pos= {x,y};     // 光标的起始位(第1列,第3行) 0是第1列 2是第3行     hOut = GetStdHandle(STD_OUTPUT_HANDLE);     SetConsoleCursorPosition(hOut, pos);     //printf("定位光标位置搜索(%d,%d)\n",pos.X,pos.Y); } /* 函数名:paintGameUI() 函数功能:绘制棋盘 函数参数:无 函数返回值:无 */ void paintGameUI()  //打印游戏棋盘  使用ROW COL在上面宏定义可以改变//棋盘大小 {     int i=0;     int j=0;     printf("┌ ");     //顶部     for(i=0;i<COL;i++)     {         printf("┬ ");     }     printf("┐\n");     //中间     for(j=0;j<ROW;j++)     {         printf("├ ");         for(i=0;i<COL;i++)         {             printf("┼ ");             }         printf("┤\n");     }     //底部     printf("└ ");     for(i=0;i<COL;i++)     {         printf("┴ ");     }     printf("┘\n"); } void playgame() {     int arr[ROW][COL]={0}; // 初始化 0-没有棋子 1用户下棋黑 2电脑下棋白     int x,y;      //用户输入的行 列     int row,col;  //落子的位置     int i,j; //  规则   判断输赢 遍历二维数组     paintGameUI();     //    绘制棋盘     while(1)//确保多次 确保用户电脑有效落子多次     {         while(1)    //      保证用户能够有效落子一次 用户下棋         {             gotoxy(0,16);//打印文字 0距离左边 16距离顶部             printf("                        ");  //覆盖掉用户之前所输,//让用户可以再输             gotoxy(0,16); //打印文字 0距离左边 16距离顶部             printf("请输入下棋的位置,例如:(2 3):");             scanf("%d %d",&x,&y);             row = x-1;  //行 距离顶部的长度 数组是0开始的             col =y-1;  //列 距离左边的长度 下棋的位置             if(arr[row][col]==0)   //下棋位置是否是棋子             {                    gotoxy(col*2,row);                  printf("●");//用户下棋                 //修改二维数组的值                 arr[row][col]=1; //用户下棋                 for(i=0;i<ROW;i++)                     {                         for(j=0;j<COL;j++)                        {                         //横着五个都是1  列变                         if( arr[i][j]==arr[i][j+1]&&arr[i][j]==arr[i][j+2]&&                              arr[i][j]==arr[i][j+3]&&arr[i][j]==arr[i][j+4]&&j+4<=COL&&arr [i][j]==1)                         {                             gotoxy(0,18);                             printf("用户赢了\n");                             return ;                             }//竖着五个都是1 行变                         else if(arr[i][j]==arr[i+1][j]&&arr[i][j]==arr[i+2][j]&&                              arr[i][j]==arr[i+3][j]&&arr[i][j]==arr[i+4][j]&&i+4<=ROW&&arr [i][j]==1)                         {                             gotoxy(0,18);                             printf("用户赢了\n");                             return ;                            }                         }                 }                 break;    //轮到对方下棋                 }             else if(arr[row][col]==1||arr[row][col]==2)  //用户下棋1 电脑下棋2             {                 gotoxy(0,17);                 printf("请重新输入坐标");             }             }         while(1) //    确保电脑有效落子一次 电脑下棋         {             //电脑下棋  电脑随机落子             row= rand()%14+0;  //二维数组索引0-13               col= rand()%14+0;  //电脑随机落子             //行距离顶部row  列距离左边col             if(arr[row][col]==0)   //下棋位置是否是棋子 空 电脑可以下棋             {                    gotoxy(col*2,row);                 printf("○");//下棋                 //修改二维数组的值                 arr[row][col]=2; //电脑下棋                 for(i=0;i<ROW;i++)     //电脑赢 最好用算法                 {                     for(j=0;j<COL;j++)                     {                         //横着五个都是1  列变                         if( arr[i][j]==arr[i][j+1]&&arr[i][j]==arr[i][j+2]&&                              arr[i][j]==arr[i][j+3]&&arr[i][j]==arr[i][j+4]&&j+4<=COL&&arr [i][j]==2)                         {                             gotoxy(0,18);                             printf("电脑赢了\n");                             return;                         }//竖着五个都是1                         else if(arr[i][j]==arr[i+1][j]&&arr[i][j]==arr[i+2][j]&&                              arr[i][j]==arr[i+3][j]&&arr[i][j]==arr[i+4][j]&&i+4<=ROW&&arr [i][j]==2)                         {                             gotoxy(0,18);                             printf("电脑赢了\n");                             return;                          }                         }                 }                 break;                 }             }         } } int main() {     playgame();         return 0; }

推荐阅读