Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Random 在MxN数组区域中查找随机WxH矩形拟合,其中数组[x][y]==number_Random - Fatal编程技术网

Random 在MxN数组区域中查找随机WxH矩形拟合,其中数组[x][y]==number

Random 在MxN数组区域中查找随机WxH矩形拟合,其中数组[x][y]==number,random,Random,我正在编写一个游戏,每当一个新游戏开始时,就会生成一个随机地图。游戏场是一个MxN布尔数组真=地,假=空。从该数组中,我计算每个连接的自由空气区域,生成一个新的MxN int数组,其中int值为0(如果有接地),或区域编号(如果是自由空间),每个自由空间与相邻的自由空间具有相同的区域。现在,我的随机运动场被分隔在编号的房间里 例如: 地面数据: 000001100111000 000011000001110 000111000001111 000001110000001 0000000 1100

我正在编写一个游戏,每当一个新游戏开始时,就会生成一个随机地图。游戏场是一个MxN布尔数组真=地,假=空。从该数组中,我计算每个连接的自由空气区域,生成一个新的MxN int数组,其中int值为0(如果有接地),或区域编号(如果是自由空间),每个自由空间与相邻的自由空间具有相同的区域。现在,我的随机运动场被分隔在编号的房间里

例如: 地面数据: 000001100111000 000011000001110 000111000001111 000001110000001 0000000 11000011

房间数据: 111110022000333 111100222220003 111000222220000 111110002222220 111111100222200

我需要用怪物、物体等填充这些房间。因此,我需要一些方法来找到,给定一个矩形大小和一个房间,房间内WxH矩形适合的随机位置

显然,我可以盲目地尝试随机坐标,直到标准匹配为止,但我认为这不是真正的方法,因为随机数可能需要很长时间才能满足要求,或者不满足要求,这是随机的

我不在乎这个随机区域以后是否可以重用,我的意思是,我不在乎同一个随机区域是否可以被随机选择两次,换句话说,如果对象在其他对象之上繁殖,但是最好也能够处理这种情况


谢谢:

您可以使用类似于房间确定算法的逻辑为对象创建一个有效位置列表,并随机选择一个索引到该列表中。

我将创建第三个MxN数组,每个点中有一个0或1。0表示WxH不适合该位置,1表示它适合该位置。这应该同时计算,或者说,在创建第二个阵列之后,

首先随机放置对象,然后通过从它们的位置生长生成地形是否可行?这可能可行,但我必须重写地形生成器,并且该项目的截止日期即将到来。无论如何,谢谢你的主意。我决定这样做,尽管我担心我会有一些记忆问题。接受积分的列表可能会变得相当大,但随着游戏场地的扩大,我只会得到更多的房间,而不是更大的房间,所以对于任何场地大小,列表的大小都是相同的。它就像一个符咒,比我想象的要快。谢谢: