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

2022-08-05 12:13:46

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

本文实例为大家分享了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; // 规则  判断输赢 遍qWTalDPxdL历二维数组
 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]&aphpmp;&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("○");//下棋
    //javascript修改二维数组的值
    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;
}

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

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