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

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

C语言要想学好还是要多学多练多实践,在接下来我也会不断更新这一类小白游戏!

《三子棋》这里是小300行的代码,可以培养代码思想

代码我放在Gitee:1_21/三子棋 · 404NOt/homework - 码云 - 开源中国 (gitee.com)

          Github:homework/1_21/三子棋 at main · N404NOt/homework (github.com)

下面我将给各位学者一步步分析代码(本人使用的是vs2019如有需要私信我)

这是本项目的运行结果!

image.png

首先:

     我们遵从高内聚低耦合的理念,创建代码实现文件和运行文件及头文件,这样也方便理解代码运行逻辑

image.png编辑

image.png

编辑

项目内容:

1.界面实现

2.棋盘的初始化;

3.棋子移动(玩家,电脑)(循环)

4.判断游戏结果(循环)

5.完善以及运行

1.界面实现:

效果:

image.png

编辑代码:

image.png

编辑

先不要看初始化的值,这里最好把界面写个menu()函数出去,这样更简洁;我们剩下要做的就是往里面填补东西了,这相当于前台。

2.棋盘的初始化

遵循高内聚低耦合我把函数写在game.h中,在game.c(cpp)中实现

image.png编辑

void InitBoard(char chess[][COL])
{
  for (int i = 0; i < ROW; i++)
  {
    for (int j = 0; j < COL; j++)
    {
      chess[i][j] = ' ';
    }
  }
}

用InitBoard函数初始化我们每一个棋子为‘ ’,方便我们棋盘的展示以及输入。

紧接着就是棋盘的框架展示了,game.h中写这个函数,同样在game.c中实现

image.png编辑

void DisplayBoard(char chess[ROW][COL])
{
  for (int i = 0; i < ROW; i++)
  {
    for (int j = 0; j < COL; j++)
    {
      printf(" %c ", chess[i][j]);
      if (i < COL&&j<COL-1)
      {
        printf("|");
      }
    }
    printf("\n");
    for (int j = 0; j < ROW&&i<ROW-1; j++)
    {
      printf("----");
    }
    printf("\n");
  }
}

实现了棋盘的初始化,中间的空白就是我们初始化的棋子‘ ’image.png编辑

3.这就是我们的关键一步了,棋子的移动废话不多说先上代码

image.png

编辑

void Playermove(char chess[ROW][COL],int row,int col)
{flag:
  scanf("%d %d", &row, &col);
  if (row > 0 && row <= ROW && col > 0 && col <= COL)
  {
    if (chess[row-1][col-1] == ' ')
    {
      chess[row-1][col-1] = 'x';
    }
    else
    {
      printf("输入错误,请重新输入:");
      goto flag;
    }
  }
  else
  {
    printf("输入错误,请重新输入:");
    goto flag;
  }
  printf("\n");
}
void Computermove(char chess[ROW][COL])
{
  printf("\n");
  srand((unsigned int)time(NULL));
flag2:  
  int row = rand() % ROW + 1;
  int col = rand() % COL + 1;
  if (chess[row-1][col-1] == ' ')
  {
    chess[row - 1][col - 1] = 'o';
  }
  else
  {
    goto flag2;
  }
}
相关文章
|
9月前
|
定位技术 C语言
c语言及数据结构实现简单贪吃蛇小游戏
c语言及数据结构实现简单贪吃蛇小游戏
|
11月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
356 7
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
10月前
|
存储 编译器 C语言
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
本文档介绍了C语言环境配置和编程任务,主要内容包括: - **C语言环境配置**:详细讲解了在Windows系统上配置C语言开发环境的步骤。 - **第1关:程序改错**:包含任务描述、相关知识(如头文件引用、基本语法规则)、编程要求、测试说明及通关代码。 - **第2关:scanf函数**:涉及`scanf`和`printf`函数的格式与使用方法,提供编程要求、测试说明及通关代码。 文档结构清晰,涵盖从环境搭建到具体编程任务的完整流程,适合初学者学习和实践。
277 4
|
10月前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
269 1
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
127 1
|
C语言 C++
【C语言】编写“猜数字“小游戏
【C语言】编写“猜数字“小游戏
209 1
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
130 0
|
2月前
|
存储 C语言
`scanf`是C语言中用于按格式读取标准输入的函数
`scanf`是C语言中用于按格式读取标准输入的函数,通过格式字符串解析输入并存入指定变量。需注意输入格式严格匹配,并建议检查返回值以确保读取成功,提升程序健壮性。
910 0
|
4月前
|
安全 C语言
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
302 15
|
10月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
529 23