C++/SDL 进阶游戏开发 ——双人塔防游戏(代号:村庄保卫战 05)

在这里插入图片描述

在这里插入图片描述
🎁个人主页:工藤新一¹

🔍系列专栏: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.hMap类 对外交互的接口:

在这里插入图片描述


9.1ConfigManager 游戏配置管理器管理器类

接下来,我们需要考虑,要将 map 放置在哪里?来供我们程序使用:

在这里插入图片描述


9.1.1添加角色信息

在这里插入图片描述


9.2 Wave 波次类相关定义

在这里插入图片描述


在筛选器中,定义 enemy_type.h 类:

在这里插入图片描述


定义波次的生成事件:

在这里插入图片描述


另外,我们还需存储波次事件映射 level.json (波次配置文件)

在这里插入图片描述


9.3配置 ConfigManager 类成员定义

在这里插入图片描述


在这里插入图片描述

🌟 各位看官好我是工藤新一¹呀~

🌈 愿各位心中所想,终有所致!

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值