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;
  }
}
相关文章
|
17天前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
30天前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
31 1
|
2月前
|
存储 编译器 C语言
|
2月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
42 4
【C语言入门】初识C语言:掌握编程的基石
|
2月前
|
存储 C语言
【C语言】猜数字小游戏
C语言实现猜数字小游戏
29 2
【C语言】猜数字小游戏
|
2月前
|
编译器 C语言 C++
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
|
17天前
|
存储 C语言
【C语言函数】static和extern关键字修饰
【C语言函数】static和extern关键字修饰
|
12天前
|
C语言
【C语言】字符串及其函数速览
【C语言】字符串及其函数速览
16 4
|
12天前
|
编译器 程序员 C语言
【C语言篇】从零带你全面了解函数(包括隐式声明等)(下篇)
⼀般情况下,企业中我们写代码时候,代码可能⽐较多,不会将所有的代码都放在⼀个⽂件中;我们往往会根据程序的功能,将代码拆分放在多个⽂件中。
|
15天前
|
测试技术 C语言
C语言中的void函数
C语言中的void函数