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;
  }
}
相关文章
|
3天前
|
编译器 程序员 C语言
用C语言写一个扫雷小游戏
用C语言写一个扫雷小游戏
8 0
|
3天前
|
C语言
用C语言写一个猜随机数的小游戏
用C语言写一个猜随机数的小游戏
9 0
|
3天前
|
存储 关系型数据库 MySQL
C语言/C++实战项目雷霆飞机(代码改进)
C语言/C++实战项目雷霆飞机(代码改进)
|
3天前
|
人工智能 C语言
C语言实战项目(AI代码)
C语言实战项目(AI代码)
|
3天前
|
存储 关系型数据库 MySQL
经典C语言/C++项目,雷霆战机
经典C语言/C++项目,雷霆战机
|
22天前
|
存储 编译器 C语言
一篇带你玩转C语言指针:从入门到精通
一篇带你玩转C语言指针:从入门到精通
|
28天前
|
存储 小程序 编译器
C语言之三子棋小游戏的应用
C语言之三子棋小游戏的应用
|
28天前
|
C语言
C语言之详解数组【附三子棋和扫雷游戏实战】(二)
C语言之详解数组【附三子棋和扫雷游戏实战】(二)
|
28天前
|
存储 编译器 C语言
C语言之详解数组【附三子棋和扫雷游戏实战】(一)
C语言之详解数组【附三子棋和扫雷游戏实战】(一)
|
1月前
|
存储 编译器 C语言
【C语言必知必会| 第十篇】指针入门,这一篇就够了
【C语言必知必会| 第十篇】指针入门,这一篇就够了
19 0

相关产品

  • 云迁移中心
  • 相关实验场景

    更多