C语言实现简单井字棋游戏

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

游戏截图

C语言实现简单井字棋游戏_第1张图片

C语言实现简单井字棋游戏_第2张图片

源代码

person.h

//玩家对战 
void person()
{
 int i,j;
 initMap(map);
 //打印棋局 
 displayMap(map);
 //未分出胜负且棋局未落满子前无限循环 
 while(1)
 {
  //获取玩家下子位置 
  getXY(&i,&j);
  //玩家落子
  setPiece(map,i,j);
  //清屏 
  system("cls");
  //打印棋局 
  displayMap(map);
  //玩家落子后判断是否已经分出胜负
  if(isWin(map)==1)
  {
   //输出获胜方 
   displayWinner();
   break;
  }
  //是否棋局已满 
  else if(count==row*col)
  {
   printf("平局!\n");
   break; 
  } 
  //交替到对手回合
  exchangeTurn(); 
 }
}

computer.h

//局面价值 
int getSum(char map[][col])
{
 int sumO=0,sumX=0;
 int i,j;
 for(i=0;imaxSum)
     {
      maxSum=sum;
      x=i;
      y=j;
     }
    }
    
    map[i][j]=m; 
   } 
  }
 }
 map[x][y]='X'; 
}

void computer()
{
 int i,j;
 char computerType='X';
 initMap(map);
 //打印棋局 
 displayMap(map);
 //未分出胜负且棋局未落满子前无限循环 
 while(1)
 {
  //电脑落子 
  if(nowType==computerType)
  {
   printf("电脑落子:");
   think(map);
  }
  //玩家落子 
  else
  {
   //获取玩家下子位置 
   getXY(&i,&j);
   //玩家落子
   setPiece(map,i,j);
  }
 
  //清屏 
  system("cls");
  //打印棋局 
  displayMap(map);
  //玩家落子后判断是否已经分出胜负
  if(isWin(map)==1)
  {
   //输出获胜方 
   displayWinner();
   break;
  }
  //是否棋局已满 
  else if(count==row*col)
  {
   printf("平局!\n");
   break; 
  } 
  //交替到对手回合
  exchangeTurn(); 
 }
}

main.c

#include
#include

//棋局
char map[3][3];
//行列
int row=3,col=3;
//棋子类型
char o='O',x='X',m=' ';
//当前棋子类型
char nowType='O'; 
//已落子数量
int count=0;

//初始化棋局 
void initMap(char map[][col])
{
 int i,j;
 for(i=0;i=row||*j<0||*j>=col||map[*i][*j]!=m)
  {
   printf("输入不合法!\n"); 
  } 
  else 
  {
   return;
  } 
 }
}

//交替下子
void exchangeTurn()
{
 if(nowType==o)
 {
  nowType=x;
 }
 else
 {
  nowType=o;
 }
}

//下子
void setPiece(char map[][col],int i,int j)
{
 map[i][j]=nowType;
 count++;
}

//判断是否分出胜负,分别从横竖斜三个方向数数 
int isWin(char map[][col])
{
 int i,j;
 int flagR,flagC;
 for(i=0;i 
 

代码解析

1、 其实棋类游戏设计最重要的就是模拟下棋的过程。
2、 我们知道井字棋是双方交替下子,一方执O,一方执X。
3、 比如O先下,玩家下完子后,我们判断一下此时他是否已经获胜(即是否出现横或竖或两斜线出现三子连珠的情况),没有获胜则判断是否已经将棋局下满子了,还是没有的话,轮到X的回合。再次执行此步骤。
4、 了解了过程就自然好设计了。因为棋局比较简单,我们用一个二维字符数组即可存储。落子位置用坐标(x,y),通过玩家输入即可进行模拟。

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

你可能感兴趣的:(C语言实现简单井字棋游戏)