查找二维数组中两点之间的距离
C++ finding distance between two points in 2D array
我现在正在使用继承,我没有任何问题。我有这个字符串向量(基本上是一个二维字符数组)。
确切的中间是鲨鱼所在的位置和鲨鱼的特征根据其他鱼的位置变化
例如.....
.....
^.l..
.....
.....
箭头是鱼所在的位置,因为鱼在左边。鲨鱼变成了"l"
.>...
.....
..u..
.....
.....
箭头是鱼所在的位置,因为鱼在上面。鲨鱼变成了"u"
我必须正确执行的代码是:
void Shark::point(std::vector<std::string>& map){
if (map[0][0] != '.' || map[1][0] != '.' || map[2][0] != '.' || map[3][0] != '.' || map[4][0] != '.' || map[1][1] != '.' || map[2][1] != '.' || map[3][1] != '.'){
ProtoFish::m_direction = Direction::left;
}
if (map[0][1] != '.' || map[0][2] != '.' || map[0][3] != '.' || map[1][2] != '.'){
ProtoFish::m_direction = Direction::up;
}
if (map[4][1] != '.' || map[4][2] != '.' || map[4][3] != '.' || map[3][2] != '.'){
ProtoFish::m_direction = Direction::down;
}
if (map[0][4] != '.' || map[1][4] != '.' || map[2][4] != '.' || map[3][4] != '.' || map[4][4] != '.' || map[1][3] != '.' || map[2][3] != '.' || map[3][3] != '.'){
ProtoFish::m_direction = Direction::right;
}
}
我基本上只是检查鱼是否在这张地图上:
l u u u r
l l u r r
l l . r r
l l d r r
l d d d r
where if '。"char不存在,那是鱼所在的方向,所以鲨鱼应该指向那个方向。
问题发生在有多条鱼的地方。
>....
..>..
..*..
.>...
..^>.
我知道我应该做什么,但我不知道怎么做,甚至不知道如何开始。我们的目标只是让鲨鱼面对最近的鱼的同一个方向。所以基本上箭头"最接近"中间。有人能帮我从这个开始吗?也许像一个单独的函数来计算每个元素到中心的距离?
您需要计算每条鱼的距离-要做到这一点,您将鱼的位置转换为(x,y)坐标。鲨鱼所在的位置是(0,0)坐标。
.....
.....
^.l..
.....
.....
would be (-2,0) for the fish ^
.>...
.....
..u..
.....
.....
would be (-1,3) for the fish >
所以从2D坐标转换很容易做到。对于距离你在二维中使用毕达哥拉斯定理,在这种情况下根号下x坐标的平方+ y坐标的平方。然后需要另一个新的数组来存储每条鱼的距离。然后你需要在新的距离数组中搜索最小的值数组的索引是一个fish索引(就像fish的id)。这将给你最接近鲨鱼的鱼,这样你就可以让鲨鱼面对正确的方向,如果有一个拳头。然而,如果有不止一条鱼在相同的距离,你需要考虑一个新的规则,例如,在这种情况下(如果左边的鱼比右边的鱼多,左边和右边的鱼距离相同,然后面向左边,因为有更多的鱼?
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 用C++程序计算圆锥体的体积、球体的体积、八边形的面积和两点之间的距离
- 找到两点之间的中点
- 在C++中计算两点之间的角度,得到了奇怪的结果
- 使用Opencv/c++在Stream中的两点之间绘制aline
- 如何知道数组中两点之间的单元格数
- 如何有效地计算两点之间的角度
- 如何使用两点和步骤 c++ 之间的元素初始化向量
- 查找二维数组中两点之间的距离
- 尝试在c++中找到(x,y)坐标系中两点之间的最短路径.误差11db
- C++检测两点之间的碰撞,并在发生碰撞时从法线上反弹
- 复杂性理论-c++中两点之间的最小距离
- 我怎么做两点之间的碰撞检查呢?(c++)
- 查找两点之间的距离