如果士兵在棋盘游戏中处于队形,如何检查空心方格? 游戏(代码>是C++的棋盘游戏,像矩阵,士兵可以使用编队< /代码>)士兵可以部署在队形中。(只有一名士兵可以部署在地图/矩阵上的一个单元上,编队可以在8个方向上与x轴成0、45、90、135、180、225、270、315度角,当士兵在编队中时,他们在相邻单元中,例如,除了x2-x1=1,0度y的编队对所有单元都是相同的,以此类推,45度y2-y1=1和x2-x1=1)。 队形为直线形和空心方形。我需要一种非常有效的方法来检查士兵是否处于队形(士兵在班上有自己的x和y位置)。对于第I行,按x排序(我有代表部队士兵位置的std::list),并检查相邻点之间的差异是否为1(在0、180的情况下;在45、135、225、315的情况下,也检查y的差异是否为1或-1)。如果士兵在队形中,如何检查空心方格
(澄清一下,就像这张丑陋的图片) 您可以尝试以下方法:如果士兵在棋盘游戏中处于队形,如何检查空心方格? 游戏(代码>是C++的棋盘游戏,像矩阵,士兵可以使用编队< /代码>)士兵可以部署在队形中。(只有一名士兵可以部署在地图/矩阵上的一个单元上,编队可以在8个方向上与x轴成0、45、90、135、180、225、270、315度角,当士兵在编队中时,他们在相邻单元中,例如,除了x2-x1=1,0度y的编队对所有单元都是相同的,以此类推,45度y2-y1=1和x2-x1=1)。 队形为直线形和空心方形。我需要一种非常有效的方法来检查士兵是否处于队形(士兵在班上有自己的x和y位置)。对于第I行,按x排序(我有代表部队士兵位置的std::list),并检查相邻点之间的差异是否为1(在0、180的情况下;在45、135、225、315的情况下,也检查y的差异是否为1或-1)。如果士兵在队形中,如何检查空心方格,c++,algorithm,game-engine,game-physics,C++,Algorithm,Game Engine,Game Physics,(澄清一下,就像这张丑陋的图片) 您可以尝试以下方法: Make a copy of the board Color the squares where you have soldiers using the first available color For each square: if the square is white, then flood fill the board starting at this square with the next availa
Make a copy of the board
Color the squares where you have soldiers using the first available color
For each square:
if the square is white, then
flood fill the board starting at this square with the next available color
while flood filling, check whether all border squares are the soldier color
if so, you have some closed formation. Otherwise, you just colored the unoccupied parts of the board.
由此产生的彩色板将有一种颜色,其中有军队和独特的颜色为未占用和封闭的空间。“你可以考虑的东西是地层内的地层允许吗?< /P>你可以添加一些图片或ASCII艺术吗?”MichaWiedenmann补充说。image@PaolaJ. 检查我的答案。希望它能对你有所帮助或者给你一些提示