C语言入门项目:三子棋小游戏(详解)(二)

简介: C语言入门项目:三子棋小游戏(详解)

在这里我分成了玩家移动以及电脑移动,在设计时你要知道你面向的不是程序员玩这个游戏而是玩家,所以他们不知道是从0,1,2,3排列的,所以你就需要在他们输入的棋子坐标上减一,来进行下一步操作,而且我们下棋子要在‘ ’处下,而不能下重复,或者越界,所以我是这么处理的

image.png

电脑下棋逻辑一样。

4.判断输赢,这里我是绕糊涂了,需要仔细思考,比如我在对角判断那就卡了半小时(谁还不是个小白了)

image.png编辑

char udge(char chess[ROW][COL])
{
  //胜利行
  int password = 0;
  for (int row = 0; row < ROW; row++)
  {
    password = 0;
    for (int col = 1; col <COL; col++)
    {
      if (chess[row][col] == chess[row][col - 1]&&chess[row][col]!=' ')
      {
        password++;
        if (password == ROW - 1)
        {
          printf("行\n");
            return chess[row][col];
        }
      }
    }
  }
  //胜利列
  for (int col = 0; col <COL; col++)
  {
     password = 0;
    for (int row = 1; row < ROW; row++)
    {
      if (chess[row][col] == chess[row-1][col] && chess[row][col] != ' ')
      {
        password++;
        if (password == COL - 1)
        {
          printf("列\n");
          return chess[row][col];
        }
      }
    }
  }
  //左到右对角
  password == 0;
  for (int row = 1; row < ROW; row++)
  {
    int col = row;
      if (chess[row][col] == chess[row - 1][col - 1] && chess[row][col] != ' ')
      {
        password++;
        if (password == 2)
        {
          printf("左到右对角\n");
          return chess[row][col];
        }
      }
  }
  //右到左对角
  password = 0;
  for (int row = 1; row < ROW; row++)
  {
    int col = ROW - row -1;
      if (chess[row][col] == chess[row - 1][col+1] && chess[row][col] != ' ')
      {
        password++;
        if (password == ROW-1)
        {
          printf("右对焦\n");
          return chess[row][col];
        }
      }
  }
  //平局
  for (int row = 0; row < ROW; row++)
  {
    password = 0;
    for (int col = 1; col < COL; col++)
    {
      if (chess[row][col]!= ' ')
      {
        password++;
        if (password == sqrt(ROW))
        {
          return 'H';
        }
      }
    }
  }
  return 'G';
}

在对角一定要多思考

在主函数中对应写入

do
    {
      DisplayBoard(chess);
      printf("请输入你要下的坐标>");
      Playermove(chess,row,col);
      judge=udge(chess);
      if (judge == 'x')
      {
        printf("<<<玩家胜利>>>");
        printf("\n");
        DisplayBoard(chess);
        system("pause");
        break;
      }
      if (judge == 'H')
      {
        printf("<<<和局>>>");
        printf("\n");
        DisplayBoard(chess);
        system("pause");
        break;
      }
      printf("\n");
      printf("电脑操作>");
      Computermove(chess);
      judge = udge(chess);
      if (judge == 'o')
      {
        printf("<<<电脑胜利>>>");
        printf("\n");
        DisplayBoard(chess);
        system("pause");
        break;
      }
        if (judge == 'H')
        {
          printf("<<<和局>>>");
          printf("\n");
          DisplayBoard(chess);
          system("pause");
          break;
        }
    } while (ct);

下面我们要做的就是剪线头的事情了,剪完运行;(这里把全局变量值改变理论上可以进行N子棋对弈,但是不太好玩)

这里写的希望大家可以理解,如果有不懂或者有错误的地方,请大伙留言评论或者私信!!!

相关文章
|
2天前
|
编译器 程序员 C语言
用C语言写一个扫雷小游戏
用C语言写一个扫雷小游戏
8 0
|
2天前
|
C语言
用C语言写一个猜随机数的小游戏
用C语言写一个猜随机数的小游戏
9 0
|
2天前
|
存储 关系型数据库 MySQL
C语言/C++实战项目雷霆飞机(代码改进)
C语言/C++实战项目雷霆飞机(代码改进)
|
2天前
|
人工智能 C语言
C语言实战项目(AI代码)
C语言实战项目(AI代码)
|
2天前
|
存储 关系型数据库 MySQL
经典C语言/C++项目,雷霆战机
经典C语言/C++项目,雷霆战机
|
21天前
|
存储 编译器 C语言
一篇带你玩转C语言指针:从入门到精通
一篇带你玩转C语言指针:从入门到精通
|
27天前
|
存储 小程序 编译器
C语言之三子棋小游戏的应用
C语言之三子棋小游戏的应用
|
27天前
|
C语言
C语言之详解数组【附三子棋和扫雷游戏实战】(二)
C语言之详解数组【附三子棋和扫雷游戏实战】(二)
|
27天前
|
存储 编译器 C语言
C语言之详解数组【附三子棋和扫雷游戏实战】(一)
C语言之详解数组【附三子棋和扫雷游戏实战】(一)
|
1月前
|
存储 编译器 C语言
【C语言必知必会| 第十篇】指针入门,这一篇就够了
【C语言必知必会| 第十篇】指针入门,这一篇就够了
19 0

相关产品

  • 云迁移中心
  • 相关实验场景

    更多