Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果士兵在棋盘游戏中处于队形,如何检查空心方格? 游戏(代码>是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 - Fatal编程技术网

如果士兵在棋盘游戏中处于队形,如何检查空心方格? 游戏(代码>是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. 检查我的答案。希望它能对你有所帮助或者给你一些提示