如何删除 2D 矢量网格中的部分路径?

Posted

技术标签:

【中文标题】如何删除 2D 矢量网格中的部分路径?【英文标题】:How do I remove parts of paths in a 2D vector grid? 【发布时间】:2013-03-14 02:39:30 【问题描述】:

我一直在为这个项目苦苦挣扎。所以我有一个“网格”,也就是一个 2D 字符向量。 79 个字符宽,20 个字符高。我创建了一些函数,它们基本上绘制了从网格的一个边缘到另一个边缘的路径。这些“路径”有些随机。我有一个随机生成器从 0-7 中选择一个 int 并使用我为其创建函数的路径的组合。所以.. 有几条路径/线穿过网格。

下一部分是在网格上的这些路径上放置矩形/正方形。经过数小时的挫折后,我得到了将这些矩形放置在路径上的程序。

下一部分让我迷失了方向,我不知道如何开始。我现在需要确定路径是否以某种方式将所有矩形连接在一起,但只有 1 或 2 条路径可能连接到一个矩形。因此,如果其中一个矩形没有触及路径,我需要调用该函数来重新生成一个包含路径和矩形的新网格。

除了能够检查路径是否在 1 或 2 个位置接触矩形之外。我需要删除多余的路径字符。因此,如果路径没有连接到另一个矩形或所需的路径,我需要删除该字符。

'#' 是路径和 '.'是矩形 下面是我的程序现在显示的示例:

        #                  #                                                   
        #                  #                                                   
   ........                #         ##############                            
   ........                #         #            # ..........                 
   ........                #         #            ##..........############     
   ........###########     #         #              ..........           #     
###........###########################              ..........           #     
   ........          #     #                        ..........           #     
   ........          #################################                   #     
                     #     #                         #                   #     
                     #     #                         #                   #     
            ........ #     #                         #                   #     
            ........ #     #                      ########################     
            ........ #     #######                #  ........                  
            ........ #           #                #  ........                  
############........##           #                #  ........                  
            ........             ##################  ........##################
            ........                                 ........                  
            ........                                 ........                  

请注意额外的“#”标记以及其中一些是如何无用的?从技术上讲,我不必删除路径分叉的位置并与路径重新连接。从技术上讲,我可以让它们接触超过 1 个位置,因为我将为矩形添加边框.. 只有 1 或 2 个点直接将“#”连接到“。” (现在不担心)它们的厚度不能超过 1 '#' 和以前的要求。在我以某种方式弄清楚如何删除我不需要的那些之后,它应该是这样的:

 ........                          ##############                            
 ........                          #            # ..........                 
 ........                          #            ##..........     
 ........###########               #              ..........                
 ........          #################              ..........                
 ........          #     #                        ..........                
 ........          #################################                        
                   #     #                         #                        
                   #     #                         #                        
          ........ #     #                         #                        
          ........ #     #                      ####     
          ........ #     #######                #  ........                  
          ........ #           #                #  ........                  
          ........##           #                #  ........                  
          ........             ##################  ........
          ........                                 ........                  
          ........                                 ........                  

我得到的最接近的方法是检测路径从某个位置的哪个方向。但我不知道如何将其用于删除“#”或检查岛矩形的方法。

请帮助我 :( 我不知道该怎么做!如果您需要更多信息,请告诉我。

【问题讨论】:

【参考方案1】:

这不是您所要求的,但我认为它可以为您提供很大帮助,What are some ideal algorithms for Rogue-like 2D dungeon generation?、Dungeon Generation 而这个Dungeon-Building Algorithm 甚至有 C++ 代码示例。还有rouge-like游戏的代码也必须做同样的事情。

【讨论】:

是的,这基本上就是我们为这个项目所做的。我似乎无法找到这个特定部分的指南/教程=/我应该已经开始学习至少对于地牢生成的教程。我们有相当具体的功能,因此我们应该实现 @ModdedLife 希望这至少能给你一些好的想法和代码来利用。有大量关于胭脂类游戏的信息,谁知道呢? 是的,我在这个项目开始时做了一些研究。它们中的大多数都比我们需要做的要深入得多。不过这肯定有帮助。

以上是关于如何删除 2D 矢量网格中的部分路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何有效地优化2D路径中的坐标数?

如何创建“删除按钮以从C#中删除SQL Server数据库中的网格列”?

如何从 Bash 中的路径字符串中删除文件后缀和路径部分?

在 2D 矢量中的预定位置更改多个值的最简单方法是啥?

react ag网格中的行删除后如何刷新网格

Xamarin:如何删除网格中特定行中的项目