目前,我只使用两个位向量,一个用于红色 block ,一个用于蓝色 block 。这些 block 以 10x10 的网格堆叠在另一个上面。当炸弹在垂直方向上只有红色方 block 发生爆炸时,我只做简单的数学运算并检查位向量是否命中,所以最糟糕的是我必须处理 10 次检查和快速查找。
现在,我想做一个炸弹可以摧毁从起始方 block 开始的所有相连的红色方 block (相连意味着垂直、水平或对角线彼此)。
解决这个问题的最佳途径是什么?分布是随机的,但通常是 40/60。正如我所说,我必须处理的事情是位向量、 block ID 以及它们基于接口(interface)的 block 类型。
是否最好在单独的线程上每帧检查 1 或 2 个 block 的外环以划分工作(因此每帧检查 20 次)还是有更优雅的方法来执行此操作?
最佳答案
Now, I want to make it so a bomb can destroy all connected red blocks from the start block
听起来像是 flood fill algorithm 的工作.
The distribution is random but usually something like 40/60.
老实说,我不明白你的意思。
至于实现细节,它们会因语言而异。
关于algorithm - 需要 block 破坏算法(类似于炸弹人),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6635248/