C语言之2048小游戏理解分析

目录

游戏程序思维导图:

​编辑

功能介绍:

代码管理:

主函数:

    头文件:


游戏程序思维导图:
功能介绍:

按键W --------------- 向上

按键A --------------- 向左

按键S --------------- 向下

按键D --------------- 向右

按键P --------------- 开始游戏

按键L --------------- 结束游戏

按键其他 ---------- 提示有错

代码管理:

direction_choose.c  包含 1、get_errorInfo函数   获取错误信息并打印
                                        2、get_chooseInfo函数  获取方向选择的信息
                                        3、choose_func函数  (1)判断输入的不同方向输出相应的数组
                                                                           (2)判断输入的不同方向计算的得分
                                                                           (3)判断输入信息,输出相应错误原因
draw_map.c           draw函数          打印函数
game_cg.c            game_cg函数       判断是否通关
game_over.c          game_over函数     判断游戏是否失败
go_down.c     包含 1、go_down_move函数   向下移动函数
                              2、go_down_add函数    向下相加函数
                              3、go_down函数        整合向下移动函数和向下相加函数
go_up.c         包含 1、go_up_move函数   向上移动函数
                              2、go_up_add函数    向上相加函数
                              3、go_up函数        整合向上移动函数和向上相加函数
go_left.c        包含 1、go_left_move函数   向左移动函数
                              2、go_left_add函数    向左相加函数
                              3、go_left函数        整合向左移动函数和向左相加函数
go_right.c      包含 1、go_right_move函数   向右移动函数
                              2、go_right_add函数    向右相加函数
                              3、go_right函数        整合向有移动函数和向右相加函数
init.c               包含 1、CreateNumber函数    随机产生2或者4
                               2、init函数            调用CreateNumber函数在数组中随机0位随机产生2或者4          

主函数:
#include "head.h"

int main()
{
    char mode = 0;

    char start = 0;
    int score = 0;
//lable:
    printf("开始游戏请按 P ,结束游戏请按 L\n");
lable:
    system("stty -icanon"); // 系统函数将缓冲区清空

	start = getchar();
    if(start == 'p')
    {
        choose_func(start,score);
    }      
    else
    {
        get_errorInfo(E_ERROR_STATE);
        goto lable;
    }
    while(game_over() && mode != 'l'&& start == 'p')
    {   
        printf("输入A:向左,D:向右,W:向上,S:向下: \n");
        system("stty -icanon");
	    mode = getchar();
        if(mode =='p')
        {
            mode = 'P';
        }
        score = choose_func(mode,score);
        
    }  
    if(mode=='l')
    {
        printf("游戏结束。\n"); 
    }
    return 0;
}
    头文件:
#ifndef _HEAD_H 
#define _HEAD_H

#include<stdio.h> 
#include <stdlib.h>
#include<math.h>
#include<time.h>
#include<stdbool.h>

#define ROW 4   //定义行
#define COL 4   //定义列
//存储数据的数组
int map[ROW][COL];

void draw(); // 画图函数

int go_left_move(); // 向左移动函数
int go_left_add(int score); // 向左相加函数
int go_left(int score); // 向左函数

int go_right_move(); // 向右移动函数
int go_right_add(int score); // 向右相加函数
int go_right(int score); // 向右函数

int go_up_move(); // 向上移动函数
int go_up_add(int score); // 向上相加函数
int go_up(int score); // 向上函数

int go_down_move(); //向下移动函数
int go_down_add(int score); // 向下相加函数
int go_down(int score); // 向下函数

void init(); // 初始化函数

int choose_func(char mode,int score); // 选择方向移动函数

bool game_over(); // 游戏结束判断函数


enum choose{left = 0,
            right = 1,
            up = 2,
            down = 3,
            start = 4,
            end = 5}; // 定义选择枚举

static char get_choose[] = { 
    [left] = 'a',
    [right] = 'd',
    [down] = 's',
    [up] = 'w',
    [start] = 'p',
    [end] = 'l'
}; // 定义选择枚举选择相应的字符键


enum errorInfo
{
    E_ERROR_INPUT,
    E_ERROR_CSTATE,
    E_ERROR_STATE,
    E_ERROR_NONE
};

static char *error_buf[] = {
    [E_ERROR_INPUT] = "输入错误,请重新输入",
    [E_ERROR_CSTATE] = "已经开始游戏,请重新输入",
    [E_ERROR_STATE] = "开始错误,请按P开始游戏",
    [E_ERROR_NONE] = "未知错误"
};
char *get_errorInfo(enum errorInfo mc_erron);

#endif

详细代码可以自行下载浏览。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值