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子棋对弈,但是不太好玩)

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

相关文章
|
22天前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
74 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
1月前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
33 1
|
2月前
|
C语言 C++
【C语言】编写“猜数字“小游戏
【C语言】编写“猜数字“小游戏
107 1
|
2月前
|
存储 API C语言
【C语言】实践:贪吃蛇小游戏(附源码)(一)
【C语言】实践:贪吃蛇小游戏(附源码)
|
2月前
|
C语言 定位技术 API
【C语言】实践:贪吃蛇小游戏(附源码)(二)
【C语言】实践:贪吃蛇小游戏(附源码)
【C语言】实践:贪吃蛇小游戏(附源码)(二)
|
2月前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
2月前
|
C语言
【C语言】实践:贪吃蛇小游戏(附源码)(三)
【C语言】实践:贪吃蛇小游戏(附源码)
|
2月前
|
C语言
C语言贪吃蛇小游戏来啦!
C语言贪吃蛇小游戏来啦!
36 0
|
C# C语言 C++
VS2012编写C语言项目
原文:VS2012编写C语言项目 这两天看了一下C语言方面的知识,大学的时候使用的Turbo C对于我来说已经是很久之前的事情了,编写C语言的还有VC++,不过这货在64的表现实现是很让人失望,还是用最熟悉的VS吧,之前没有用VS搞过C语言,今天倒腾了一下,重点分享一下自己的过程吧。
649 0