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

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

相关文章
|
定位技术 C语言
c语言及数据结构实现简单贪吃蛇小游戏
c语言及数据结构实现简单贪吃蛇小游戏
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
496 7
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
存储 编译器 C语言
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
本文档介绍了C语言环境配置和编程任务,主要内容包括: - **C语言环境配置**:详细讲解了在Windows系统上配置C语言开发环境的步骤。 - **第1关:程序改错**:包含任务描述、相关知识(如头文件引用、基本语法规则)、编程要求、测试说明及通关代码。 - **第2关:scanf函数**:涉及`scanf`和`printf`函数的格式与使用方法,提供编程要求、测试说明及通关代码。 文档结构清晰,涵盖从环境搭建到具体编程任务的完整流程,适合初学者学习和实践。
434 4
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
355 1
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
166 1
|
C语言 C++
【C语言】编写“猜数字“小游戏
【C语言】编写“猜数字“小游戏
252 1
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
180 0
|
API C语言
C语言编程之经典小游戏--贪吃蛇
C语言编程之经典小游戏--贪吃蛇
498 0
C语言编程之经典小游戏--贪吃蛇
|
机器学习/深度学习 安全 定位技术
C语言小游戏------贪吃蛇
C语言写的贪吃蛇小游戏
369 0
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
793 23