algorithm - 需要的算法:将港口放置在六角地图中以确保洲际旅行
问题描述
我正在制作一个使用六边形图块来表示地图的游戏;瓦片或十六进制,每个都包含指向其所有邻居的指针,以列表形式。地图可能如下所示:
大的绿色区域是“大陆”,而黄色的小区域是“岛屿”,其余的都是通用水体,请注意,大陆内部可能有少量水。
大陆与海岛始终相邻,互不相接。玩家在任何时候都会占据一个格子。基本移动将玩家从一个格子移动到另一个格子,前提是起点和目的地相邻,并且该移动不会将玩家从陆地格子移动到水格子。
“港口”是一个即将推出的功能,放置在大陆或岛屿的格子中,它们允许玩家从港口移动到任何相邻的水格,这应该可以在陆地之间旅行
问题: 我想在这样的地图中放置至少 2 个港口,以确保玩家始终可以从大陆到岛屿,反之亦然。
由于以下并发症,这比看起来更难:
- 如果将港口放置在内陆水体的岸边,它们将毫无用处
- 大陆可能将海洋划分为多个部分,因此港口可能无法放置在正确的海岸上(在下面的示例中;H1 和 H2 不能仅通过水进行通信,而 H2 和 H3 可以)
因此,我欢迎任何关于在此类地图上放置港口的合适算法的清晰描述,任何伪代码都将受到高度赞赏
解决方案
推荐阅读
- rest - “另一个正在进行的操作”的 HTTP 错误代码
- angular - 缓存后如何以角度访问RouteReuseStrategy中的任何组件数据?
- azure - U-SQL 错误:提供的 Script is 135823414 bytes long, 超过了 2097152 bytes 的大小限制
- node.js - axios找不到isAxiosError.js
- python - XRAY_我们能否使用 Xray 映射一个具有多个标签的机器人测试用例(Jira 中的多个测试用例)
- mongodb - 如何将跟踪上下文传送到 MongoDB 观察者?
- javascript - 我正在使用节点并尝试使用套接字但一次又一次地出错
- prometheus - Loki 中的偏移修改器似乎不起作用
- php - 如何在codeigniter中进行分页
- angular - 由于 zone.js 问题,Angular 11 中的搜索过滤器无法正常工作