基于C语言的三子项目讲解

Gitee源码点击我

Part 1 项目分析

一、游戏介绍

游戏在九宫格的棋盘中进行,由两位玩家落子,任意横排,竖排,对角线连成三个即为获胜
对于三子棋游戏需要呈现的内容:
①需要呈现给玩家一个3*3的棋盘
②区分两名玩家的棋子,本项目中为玩家和电脑对局。
③根据落子情况判断是否由任意横排三个格子,竖排三个格子,对角线三个格子的落子都为同一玩家的落子。

二、项目结构

项目采用两个.c文件和一个.h文件的结构来编写项目。
test.c文件中为整个游戏的框架
game.c文件中将游戏中具体的不同的功能编写函数的具体内容
game.h文件中进行函数声明,以及所需的库函数的调用

image.png


Part 2 功能的代码实现

一、主函数框架

首先我们先做出一个游戏大致的框架,从主菜单→用户选择→开始游戏或者退出游戏。

[test.c]
void menu() //菜单函数,1选项为开始游戏,0选项为退出游戏
{
   
	printf("***********************\n");
	printf("********1.play*********\n");
	printf("********0.exit*********\n");
	printf("***********************\n");
}

void game()
{
   
    //game函数中实现整个游戏的逻辑
    //而游戏的细化成不同部分的功能,再分别用函数实现
}


int main
{
   
	int n = 0;  // 记录用户的选项
    scanf("%d",&n);
    do
    {
   
    	menu(); //打印菜单
        switch(n)
        {
   
        case 1:  //用户选择1,则进入游戏
        	game();  //进入游戏后,调用game函数,game函数的内容为三子棋游戏的逻辑实现
            break;
        case 0:  //用户选择0,则进入游戏
        	printf("thanks");
        default:
        	printf("输入有误,请重新输入!");
        }
	}while (n);
}

二、功能① —— 棋盘的呈现以及程序框架:

利用**下划线 ’ _ '竖线 ’ | '**的组合,呈现一个3*3的棋盘。如下图

image.png

从用户角度来看,用户在某个格子落子后,该格子就会从空白的状态变为有棋子的状态。

若我们将棋盘和二维数组关联,数组的行和列对应棋盘的行和列。则整个游戏本质上就变成了对二维数组元素的操作,一个格子即对应一个数组元素,不落子时,所有的数组元素值都设置为空格符。玩家或电脑在某一格落子时,则将该格对应的数组元素的值替换成代表棋子的字符(设玩家棋子为"#“,电脑棋子为”*")

于是我们先创建一个和棋盘同规模的数组,并将其初始化

[game.h] 头文件中包含了项目需要的库函数,定义的全局变量以及函数声明。
#include<stdio.h>
#define ROW 3
#define COL 3
//定义全局的变量,分别代表行和列。假设在以后需要修改棋盘的规模,直接修改全局变量的值即可,方便项目的维护和更改。

void InitBoard(char board[ROW][COL],int row,int col);//每定义一个函数,要在头文件处声明。函数必须先声明后调用


--------------------------------------------------------------------------

[game.c] game.c文件中包含游戏具体每个功能的函数实现
#include "game.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] = ' ';
        }
    }
}

--------------------------------------------------------------------------

[test.c]
#include "game.h" //.c文件中只需包含一下头文件,即可使用头文件中的库函数,以及读取到函数的声明

void menu(){
   ...} 

void game()
{
   
	char board[ROW][COL] = {
   0}; //创建一个和棋盘同规模的数组
    
    InitBoard(board[ROW][COL],ROW,COL); //调用函数,初始化数组
}

int main(){
   ...}

初始化完成后,便是打印棋盘的工作:

[game.h]
#include<stdio.h>
#define ROW 3
#define COL 3

//数组初始化函数声明
void InitBoard(char board[ROW][COL],int row,int col);

//打印棋盘函数声明
void DisplayBoard(char board[ROW][COL],int row,int col);

--------------------------------------------------------------------------
[game.c]
#include "game.h" 

//数组初始化函数
void InitBoard(char board[ROW][COL],int row,int col){
   ...}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值