目录
1.拆分代码

分别创建三个文件分别是test.c,sanziqi.c,sanziqi.h
作用分别是:
test.c:测试游戏逻辑
sanziqi.h:游戏相关的函数声明,符号声明,头文件的包含
sanziqi.c:游戏相关函数的实现
2.思路讲解
2.1整体框架
先在test.c里面写出整体的一个框架,并输出测试。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void menu() {//菜单
printf("--------------------\n");
printf("----- 1.play -----\n");
printf("----- 0.exit -----\n");
printf("--------------------\n");
}
int main()
{
int input = 0;
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
printf("game\n");
break;
case 0:
printf("exit\n");
break;
default:
printf("erro\n");
break;
}
} while (input);//如果input不是0,则进入循环
return 0;
}
测试结果:

2.2棋盘实现分析详解
接下来写三子棋游戏的主体函数game(),里面是三子棋游戏的主体逻辑运行。

我们先进行分析:

这是三子棋的格子,所以我们需要一个3x3的二维数组,二维数组里面初始化是空格,要不然会有其他字符。这里我们可以写成(在test.c文件)
void game() {
char board[3][3];
}
但是最好不要这么写,因为后续想改成n子棋的话会很麻烦。
所以我们在sanziqi.h头文件里面定义符号。
#pragma once
#define ROW 3
#define COL 3
于是char board[3][3]; 改成char [ROW][COL];
别忘记在test.c前面包含头文件
#include "sanziqi.h"
2.2.1初始化棋盘
接下来我们初始化二维数组,用函数来实现:
void game() {
char board[ROW][COL];
//初始化棋盘(打印空格)
InitBoard(board, ROW, COL);
}
先在头文件sanziqi.h里进行函数声明:
#pragma once
#include <stdio.h>//这里头文件里包含了,后续.c文件只要引用头文件就行
#define ROW 3
#define COL 3
//函数声明
//初始化棋盘
void InitBoard(char board[ROW][COL], int row, int col);
InitBoard()函数我们就放到sanziqi.c里实现:
用双重循环来实现二维数组初始化。
#define _CRT_SECURE_NO_WARNINGS 1
#include "sanziqi.h"
void InitBoard(char board[ROW][COL], int row, int col) {
int i = 0;
int j = 0;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
board[i][j] = ' ';
}
}
}
2.2.2打印棋盘
还是上面三个步骤,用函数来实现:
void game() {
char board[ROW][COL];
//初始化棋盘(打印空格)
InitBoard(board, ROW, COL);
//打印棋盘
DisPlayBoard(board,ROW,COL);
}
头文件里函数声明:
#pra

本文详细介绍了如何使用C语言实现三子棋游戏,从拆分代码、整体框架到棋盘初始化、打印、玩家与电脑下棋逻辑及输赢判断,每个环节都有深入讲解,适合初学者学习。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



