如何编写C语言实现五子棋小游戏的代码?

更新于
2026-10-10 13:01:22
1阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1323个文字,预计阅读时间需要6分钟。

如何编写C语言实现五子棋小游戏的代码?

本例分享了一个用C语言实现的五子棋小游戏的整体代码,供大家参考。具体内容如下:

c#include #include

如何编写C语言实现五子棋小游戏的代码?

#define ROW 15#define COL 15

int board[ROW][COL]; // 胜利条件int player; // 当前玩家int x, y; // 落子坐标

void initBoard() { for (int i=0; i

void printBoard() { printf( ); for (int i=0; i

for (int i=0; i

int checkWin(int x, int y) { int i, j; int win=0;

// 横向检查 for (i=1; i =0; i++) { if (board[x][y - i]==player) { win++; } else { break; } } for (i=1; i <=4 && y + i

// 纵向检查 for (i=1; i =0; i++) { if (board[x - i][y]==player) { win++; } else { break; } } for (i=1; i <=4 && x + i

// 斜向检查 for (i=1; i =0 && y - i >=0; i++) { if (board[x - i][y - i]==player) { win++; } else { break; } } for (i=1; i <=4 && x + i

for (i=1; i =0 && y + i

return 0;}

void playGame() { initBoard(); player=1; int gameover=0;

while (!gameover) { printBoard(); printf(Player %d, enter your move (row col): , player); scanf(%d %d, &x, &y);

if (x ROW || y COL || board[x - 1][y - 1] !=0) { printf(Invalid move!\n); continue; }

board[x - 1][y - 1]=player; if (checkWin(x - 1, y - 1)) { printBoard(); printf(Player %d wins!\n, player); gameover=1; } else { player=3 - player; } }}

int main() { playGame(); return 0;}

本文实例为大家分享了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; }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计1323个文字,预计阅读时间需要6分钟。

如何编写C语言实现五子棋小游戏的代码?

本例分享了一个用C语言实现的五子棋小游戏的整体代码,供大家参考。具体内容如下:

c#include #include

如何编写C语言实现五子棋小游戏的代码?

#define ROW 15#define COL 15

int board[ROW][COL]; // 胜利条件int player; // 当前玩家int x, y; // 落子坐标

void initBoard() { for (int i=0; i

void printBoard() { printf( ); for (int i=0; i

for (int i=0; i

int checkWin(int x, int y) { int i, j; int win=0;

// 横向检查 for (i=1; i =0; i++) { if (board[x][y - i]==player) { win++; } else { break; } } for (i=1; i <=4 && y + i

// 纵向检查 for (i=1; i =0; i++) { if (board[x - i][y]==player) { win++; } else { break; } } for (i=1; i <=4 && x + i

// 斜向检查 for (i=1; i =0 && y - i >=0; i++) { if (board[x - i][y - i]==player) { win++; } else { break; } } for (i=1; i <=4 && x + i

for (i=1; i =0 && y + i

return 0;}

void playGame() { initBoard(); player=1; int gameover=0;

while (!gameover) { printBoard(); printf(Player %d, enter your move (row col): , player); scanf(%d %d, &x, &y);

if (x ROW || y COL || board[x - 1][y - 1] !=0) { printf(Invalid move!\n); continue; }

board[x - 1][y - 1]=player; if (checkWin(x - 1, y - 1)) { printBoard(); printf(Player %d wins!\n, player); gameover=1; } else { player=3 - player; } }}

int main() { playGame(); return 0;}

本文实例为大家分享了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; }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。