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;
  }
}
相关文章
|
1月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
1月前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
34 1
|
2月前
|
存储 编译器 C语言
|
2月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
43 4
【C语言入门】初识C语言:掌握编程的基石
|
2月前
|
存储 C语言
【C语言】猜数字小游戏
C语言实现猜数字小游戏
30 2
【C语言】猜数字小游戏
|
2月前
|
编译器 C语言 C++
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
|
C# C语言 C++
VS2012编写C语言项目
原文:VS2012编写C语言项目 这两天看了一下C语言方面的知识,大学的时候使用的Turbo C对于我来说已经是很久之前的事情了,编写C语言的还有VC++,不过这货在64的表现实现是很让人失望,还是用最熟悉的VS吧,之前没有用VS搞过C语言,今天倒腾了一下,重点分享一下自己的过程吧。
642 0
|
2天前
|
存储 Serverless C语言
【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数
本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。
|
5天前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。