🎁个人主页:工藤新一¹
🔍系列专栏:C++面向对象(类和对象篇)
🌟心中的天空之城,终会照亮我前方的路
🎉欢迎大家点赞👍评论📝收藏⭐文章
文章目录
八、洋流图与预烘培寻路实现
在上一篇章中,我们预扫描地图,缓存了房屋(防守目标)的位置坐标
在地图加载完成后,调用 gerate_map_cache()
函数:
8.1洋(yang)流图简介
8.2 Route路径类实现
定义头文件 route.h
8.2.1检查重复索引(检查重复路径)
哈希优化:
8.2.2异常情况处理
推进 方向标 所指向的下一个方向
封装索引
目前 route.h
文件中代码功能
当我们传入:
const TileMap& map, const SDL_Point& idex_origin
,就可以生成出一条在游戏中可行的道路
8.2.3对于 Route 对象的路径分析
同一对象中避免存储相同路径:
不同对象的路径存储互不干扰:
8.3.4生成器路径池
借助 哈希表函数 是地图缓存生成中重要的一环:提前 “烘焙” 刷怪点的行进路线,这样地图上就可以同时出现大量的怪物,这些怪物只需依次扫描,他们出生时就会持有一个 “Route值” ,他们就会去扫描 Route类 ,依次去遍历 idex_list
。借助 哈希表 ,会使 键 --> 值
的过程非常 轻量 ,这就支持了我们游戏中同频的出现大量的怪物,也不会出现卡顿的情况
map.h
文件中
在本篇章的内容中,我们重点讨论了路径的生成,根据 洋流图 我们提前将行进路径 进行"烘焙"。这一部分的内容真正的有实际作用,是在我们完成 Enemy
的行进路线逻辑后,才能观察到它的效果。
目前,我们处在游戏执行的功能流程,先将加载的部分做好。
九、ConfigManager 游戏配置管理器设计
提供 map.h
中 Map类 对外交互的接口:
9.1ConfigManager 游戏配置管理器管理器类
接下来,我们需要考虑,要将 map
放置在哪里?来供我们程序使用:
9.1.1添加角色信息
9.2 Wave 波次类相关定义
在筛选器中,定义 enemy_type.h
类:
定义波次的生成事件:
另外,我们还需存储波次事件,映射 level.json
(波次配置文件)
9.3配置 ConfigManager 类成员定义
🌟 各位看官好,我是工藤新一¹呀~
🌈 愿各位心中所想,终有所致!