打造C语言版贪吃蛇(上)

本文介绍了使用C语言打造贪吃蛇游戏的主体设计过程,包括游戏框架分析、要素分析、实现框架中的函数以及具体功能的概述。文章通过自顶向下、逐步求精的设计思想,详细讲解了游戏地图、蛇、食物和玩家结构体的定义,并给出了startGame、selectMode、playGame、gameOver和restart等关键函数的概要。
摘要由CSDN通过智能技术生成

学了编程后难免会有些手痒,于是饥渴难耐的我瞄上了小学的经典记忆——贪吃蛇。
下面我就游戏的设计来逐步讲解我打造C语言版贪吃蛇的过程。这是一个系列的文章,共三篇,第一篇讲游戏的主体设计,第二篇就设计的细节及具体实现给出讲解,第三篇给出简易游戏AI的设计。
游戏中用到了Windows的库,只保证能在Windows环境下运行。

先看最终效果:
这里写图片描述
游戏地图大小为40*30,这里为了测试缩小地图到10*10大小。

可以看到游戏里有启动提示,模式选择,作弊模式,排行榜的功能模块。
下面应用自顶向下,逐步求精的设计思想来完成这条蛇。

游戏主体设计

1. 框架分析

主函数是游戏的流程,包含:

  1. 开始游戏
    用于游戏开始的提示,只显示一次。
  2. 选择模式
    进行难度的选择。
  3. 进行游戏
    游戏过程的主体。
  4. 游戏结束
    用于游戏结束的提示,每次游戏结束都显示。
  5. 重新开始
    返回第二步。

模板如下:

int main() {
    startGame();
    while(1) {
        selectMode();
        playGame();
        gameOver();
        restart();
    }
    return 0;
}

游戏的目标就是依次实现以上函数。

2. 要素分析

贪吃蛇里需要有基础的游戏功能及排行榜模块,据此分析贪吃蛇游戏需要的要素如下:

  1. 地图
    地图控制蛇可移动的范围,地图只要在蛇移动一步局部刷新即可。地图在开始游戏时只打印一次。

  2. 蛇需要储存节点的坐标以及蛇长以及蛇的速度,以一个结构体实现。
  3. 食物
    食物在蛇吃掉后需要立即在新位置产生,需要包含食物当前坐标以及是否存在的信息,以一个结构体实现。
  4. 玩家
    用于记录玩家信息,每次结束游戏后进行排名,需要包含玩家姓名,游戏日期,以及分数,以一个结构体实现。

可以这么定义以上要素:

struct Snake {
    int x[MAP_LENGTH * MAP_HIGHT];
    int y[MAP_LENGTH * MAP_HIGHT];
    int length;
    int speed;
};

struct Food {
    int x;
    int y;
    int exist;
};

struct Player {
    char name[20];
    char date[20];
    int score;
};

其中蛇的x[n], y[n] 表示蛇节点的坐标,定义最大蛇长为地图长*宽,x[0], y[0] 表示蛇头的横纵坐标。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值