先上成品图:

承接简单贪吃蛇C语言版高级版(一):基本框架搭建,上一篇文章是基于二维地图设计的基本框架,但是在后续的编写中发现在简单的模型下使用二维地图会让一个语句非常的长,耐读性不强。但是在复杂的情况下二维的优势便会显现,这篇文章对贪吃蛇重新设计,因为模型较为简单,所以用一维字符数组来存储。而且上一篇文章中将地图类写的非常复杂,让整个程序的逻辑有些难懂。这篇会尽量拆开,让每一个变量负责一个特定的功能。就该程序的基本架构,可以参考我的另一篇博文,里面会详细介绍每个框架的功能并图示出来----->BFS寻路算法初探

该程序的主要部分如图

1.struct StateMap_Base 定义一个状态图的基本结构

2.struct Snake_Base 定义一个蛇的基本结构

3.void init() 设置初始化函数

4.int* readConnectedMap() 定义一个函数:读取状态图

5.void SearchAround() 定义一个函数:读取周围的点并将未搜索的点加入搜索列表

6.void SearchPath() 定义一个函数:以地图上一个点为基点,将其他点连接到基点的信息存储入路径图

7.void ShowMap() 定义一个函数:打印地图

8.void Seed() 定义一个函数:随机置放果实

9.void Eat() 定义一个函数:实现移动蛇并吃掉果实的显示

其余变量含义:

1.

#define row 20 //20行

#define col 20 //20列   这两句设定了地图大小

2.

vector toSearchList;   该vector容器存储将要搜索的点

3.

vector storeList;  该vector容器存储所有点的搜索情况

4.

vector body;   该vector容器存储蛇身的坐标

5.

vector Step_un;

vector Step;   这两个vector都是记录移动步骤,因为路径寻找方式是从目标点出发逆向追溯基点,所以路径首先导出时是逆的,存在Step_un中,再倒正存入Step

6.

int head;  记录蛇头的坐标

int fruit;  记录果实的坐标

bool EatenFlag;  标记果实是否被吃

bool IsFristInit;  标记是否是第一次初始化

7.图中声明框中的信息

StatueMap_Base StatueMap;   实例化状态图

char MainMap[col*row];  定义主地图,人可直接观察的地图

int ConnectedMap[col*row][4];    定义连通图

int PathMap[col*row];  定义路径图

该程序中的贪吃蛇是在理论上的二维地图中行动,但是程序中使用的是一维数组MainMap[col*row]来存储的,在移动中通过坐标索引来映射物理地图。

程序基本思路如下:

初始化地图,初始化蛇

通过SearchPath()计算地图上各点连向基点的信息,存储在路径图PathMap中

通过追踪目标点(果实)在PathMap中的信息,可以逆向找到由果实到基点(蛇头)的路径

移动,吃掉,变长,刷新果实

循环

下面是几个图的定义:

下篇文章将详细介绍各个函数。

bfs算法 c语言,基于BFS算法的贪吃蛇(一)----基本架构相关推荐

  1. 萤火虫算法c语言,基于萤火虫算法的CFRP材料铣削刀具结构优化

    摘要: 为了提高CFRP零件的加工表面质量和刀具寿命,针对其铣削加工的刀具结构进行了优化.设计了刀具结构参数与CFRP材料铣削加工表面粗糙度.后刀面磨损量之间的正交试验.应用极差分析法分析了刀具结构参 ...

  2. R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比

    R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型.并评估模型在测试集和训练集上的分类效果(accuray.F1.偏差Deviance):Bagging算法与随机森林对比 ...

  3. R语言基于机器学习算法进行特征筛选(Feature Selection)

    R语言基于机器学习算法进行特征筛选(Feature Selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为"特征"(featu ...

  4. 装箱问题c语言函数,C语言基于贪心算法解决装箱问题的方法

    本文实例讲述了C语言基于贪心算法解决装箱问题的方法.分享给大家供大家参考,具体如下: 问题描述: 有一些箱子,容量为V,同时有n个物品,每个物品有一个体积(小于等于箱子容量),要求将物品全部装入箱子中 ...

  5. c语言装箱问题思路,C语言基于贪心算法解决装箱问题的方法

    本文实例讲述了C语言基于贪心算法解决装箱问题的方法.分享给大家供大家参考,具体如下: 问题描述: 有一些箱子,容量为V,同时有n个物品,每个物品有一个体积(小于等于箱子容量),要求将物品全部装入箱子中 ...

  6. 基于音乐/电影/图书的协同过滤推荐算法代码实现(基于用户推荐、基于项目推荐、基于SlopeOne算法推荐、基于SVD算法推荐、混合加权推荐)

    基于音乐/电影/图书的协同过滤推荐算法代码实现(基于用户推荐.基于项目推荐.基于SlopeOne算法推荐.基于SVD算法推荐.加权混合推荐) 一.开发工具及使用技术 MyEclipse10.jdk1. ...

  7. java毕业设计——基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码)——贪吃蛇游戏

    基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+J2ME的贪吃蛇游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告P ...

  8. 基于51单片机的贪吃蛇小程序(8*8LED点阵实现)by_jy

    ** 基于51单片机的贪吃蛇小程序(8*8LED点阵实现)by_jy ** 一直很想写一个贪吃蛇的小程序,这两天终于抽空完成了,这里把我的思路分享给大家,仅供参考! 代码如下: 先放段主函数压压惊 v ...

  9. C语言与C++基础编写贪吃蛇项目1

    C语言与C++基础编写贪吃蛇项目1 第一阶段: 简单的移动的贪吃蛇编写. 小白编写,勿喷. 一.总体项目功能: 1.添加背景音乐或者动作音效 2.有欢迎界面,游戏选项等界面 3.地图范围内有障碍物,可 ...

最新文章

  1. 网站SEO优化哪些操作会被视为作弊?
  2. 多台服务器通过ssh 无密钥直接登陆主机
  3. 为什么你的用户总是不满意?
  4. llinux的shell脚本编程详解
  5. sqlserver 导出mysql,sqlserver数据(表)导出到mysql
  6. Unity3D学习笔记之九为场景添加细节(二)
  7. 记录——《C Primer Plus (第五版)》第八章编程练习第八题
  8. pdf 一键生成书签目录
  9. Cypress自动化测试系列之三
  10. Ubuntu各文件夹功能说明
  11. 三方接口短信验证码怎么选择好的平台?
  12. Golang环境windows 设置 GOROOT 和 GOPATH
  13. Three.js - 透视相机(PerspectiveCamera)(三)
  14. AspectJ自定义注解报错:error Type referred to is not an annotation type:xxx -----IllegalArgumentException
  15. linux看网卡百兆千兆,查看网卡是百兆还是千兆
  16. 展望计算机未来发展趋势,计算机的未来展望
  17. Intel体系MMX指令指令说明
  18. PHP设计模式-适配器模式
  19. mongodb安装配置与基本命令
  20. SQL Server出现对象名和列名无效的解决方法

热门文章

  1. centos pureftpd mysql,CentOS 搭建 Pure-FTP
  2. 支付业务的数据库表的设计
  3. 如何恢复被删除的文件?文件恢复,4招解决!
  4. conda 安装cuda
  5. 联想小新pro16换4t硬盘
  6. 是否应该使用计算机英语作文,英语作文:电脑是否让人们觉得孤独?
  7. 毕业设计(一)—— 一个低级的错误让我紧张了一会儿
  8. 如何寻找自己的兴趣点
  9. BCC-Tool 工具使用
  10. 喵喵机VS咕咕机VS印先生App对比