利用C语言编写一个简单三子棋游戏

  介绍

利用C语言编写一个简单三子棋游戏?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

用C语言实现简单的控制台三子棋游戏

首先,确定一局游戏的基本流程:

1,创建棋盘并初始化。(将棋盘看作一个二维数组)
2,打印显示出棋盘。
3,玩家落子(玩家通过输入行列坐标的方式来落子)。
4,判定胜负关系。(如果玩家胜出,则退出游戏)。
5,电脑落子(随机位置落子)。
6,判定胜负关系(如果电脑胜出,退出游戏。否,则回到步骤2继续执行)。

<强>第一步强,此处通过构造菜单()函数搭建一个简单的交互菜单和玩家交互,用来判断是否开始进行一局游戏。

 #定义_CRT_SECURE_NO_WARNINGS
  # include
  # include
  int菜单(){
  printf (“====================\ n");
  printf(“1。开始游戏\ n");
  printf(“0。结束游戏\ n");
  printf (“====================\ n");
  printf (“请输入您的选择:“);
  int选择=0;
  scanf (“% d",,选择);
  返回选择;
  }
  int main () {
  而(1){
  int=选择菜单();
  如果选择==1){//游戏();//此处调用了一个游戏函数。
  }
  else if(选择==0){
  printf(“再见! \ n");
  打破;
  }
  }
  系统(“pause");
  返回0;
  }

<强>第二步强,对第一步中调用的游戏()函数进行构造.game()函数为核心功能函数,其主要任务是完成基本流程。

1。构建初始化init()函数。初始化一个3 * 3的二维数组,将它当做棋盘,并将数组元素全部初始化为0。

空白init (char棋盘[MAX_ROW] [MAX_COL]) {//把数组中的每个元素都设=初始化为“空格”。
  for (int行=0;行& lt;MAX_ROW;行+ +){
  for (int坳=0;坳& lt;MAX_COL;坳+ +){
  棋盘(行)(col)=& # 39;& # 39;;
  }
  }
  }

2。构建棋盘打印printChessBoard()函数。运用的循环打印出3 * 3的棋盘。

空白printChessBoard (char棋盘[MAX_ROW] [MAX_COL]) {//把棋盘打印出来。
  printf (“+ - - - + - - - + - - - + \ n");
  for (int行=0;行& lt;MAX_ROW;行+ +){
  printf (“| % c | % c | % c | \ n",棋盘(行)[0],
  棋盘(行)[1],棋盘(行)[2]);
  printf (“+ - - - + - - - + - - - + \ n");
  }
  }

3。构建玩家落子playerMove()函数,玩家通过输入行列坐标的方式来落子。此过程中需要判断:1。玩家输入的行列坐标是否在棋盘的合理位置。2。玩家输入的行列坐标位置是否已经有棋子。

空白playerMove (char棋盘[MAX_ROW] [MAX_COL]) {//让玩家落子。通过控制台输入行列坐标的方式来实现。
  而(1){
  printf (“请玩家输入坐标(行坳):“);
  int行=0;
  int坳=0;
  scanf (“% d % d",,行,和坳);//校验玩家输入的坐标是否合法(是否在棋盘合理范围内)。
  如果行& lt;0 | |行祝辞=MAX_ROW
  | |坳& lt;0 | |坳祝辞=MAX_COL) {//若出现非法情况,此时应该让玩家重新输入。
  printf(“您的坐标不在合法范围(0,2)内\ n");
  继续;
  }//校验玩家落子位置是否已经有子了。
  如果(棋盘(行)(col) !=& # 39;& # 39;){
  printf(“您的坐标位置已经有子了! \ n");
  继续;
  }//真正落子。用“X”表示玩家落子。
  棋盘(行)(col)=& # 39; x # 39;;
  打破;
  }
  }

4。构建一个computerMove()函数来控制电脑落子。通过电脑产生一系列随机数来控制棋子落在棋盘坐标范围内。

空白computerMove (char棋盘[MAX_ROW] [MAX_COL]) {//电脑落子,让电脑随机产生一组行列坐标。
  而(1){
  int行=rand () % MAX_ROW;
  int坳=rand () % MAX_COL;
  如果(棋盘(行)(col) !=& # 39;& # 39;){//需要保证随机数不能是已经有棋子的位置。
  继续;
  }
  棋盘(行)(col)=& # 39; o # 39;;
  打破;
  }
  }

在该函数模块中,电脑落子随机位置的生成通过rand()函数控制,需要注意的是,我们需要通过设置随机种子来避免“伪随机”的出现。

将srand ((unsigned int)时间(0));//以当前时间戳作为随机种子。

5。构建isWin()函数判断是否胜利。此处人为约定该函数的返回结果的含义:“x # 39;表示玩家获胜。”o # 39;表示电脑获胜。& # 39;& # 39;表示胜负未分。提问# 39;表示和棋。

 char isWin (char棋盘[MAX_ROW] [MAX_COL]) {//判定所有的行。
  for (int行=0;行& lt;MAX_ROW;行+ +){
  如果(棋盘(行)[0]!=& # 39;& # 39;
  ,,棋盘(行)[0]==棋盘(行)[1]
  ,,棋盘(行)[0]==棋盘(行)[2]){
  返回棋盘(行)[0];
  }
  }//判定所有的列。
  for (int坳=0;坳& lt;MAX_COL;坳+ +){
  如果(棋盘[0](col) !=& # 39;& # 39;
  ,,棋盘[0](col)==棋盘[1](col)
  ,,棋盘[0](col)==棋盘[2](col)) {
  返回棋盘[0](col);
  }
  }//判定两个对角线。
  如果(棋盘[0][0]!=& # 39;& # 39;
  ,,棋盘[0][0]==棋盘[1][1]
  ,,棋盘[0][0]==棋盘[2][2]){
  返回棋盘[0][0];
  }
  如果(棋盘[2][0]!=& # 39;& # 39;
  ,,棋盘[2][0]==棋盘[1][1]
  ,,棋盘[2][0]==棋盘[0][2]){
  返回棋盘[2][0];
  }//判定是否和棋。看棋盘中是否有剩余空间。//调用了isFull函数。
  如果(isFull(棋盘)){
  返回& # 39;提问# 39;;
  }
  返回& # 39;& # 39;;
  }

利用C语言编写一个简单三子棋游戏