六边形格子地图的基本实现
基本思路
这是一张大小为 21 × 15 的六边形格子地图
我们将左上角的格子定义为 (1, 1)
则部分地图的坐标如下
易知:
若起点为(x, y)
当y为奇数时
可以前往的方向为
(x-1, y-1) (x, y-1) (x+1, y) (x, y+1) (x-1, y+1) (x-1, y)
当y为偶数时
可以前往的方向为
(x-1, y) (x, y-1) (x+1, y-1) (x+1, y) (x+1, y+1) (x, y+1)
然后写个bfs就能判断能到达的地方了
实现代码
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
const int max_x = 21, max_y = 15;
struct cell
{
bool Is_Block = false; //有无障碍
}hex_map[max_x + 1][max_y + 1];
int to[2][6][2] = {
-1,0, 0,-1, 1,-1, 1,0, 1,1, 0,1, -1,-1, 0,-1