如何在网格上生成随机位置?

时间:2019-03-20 17:26:14

标签: javascript math grid

我有一张9600x9600的地图,上面满是48x48的图块,我想将96x96的对象放置到随机点,我可以得到一个随机的点并将对象放置在此处,但我不知道如何正确地将它们放置在边缘。

It looks like this when placed near the edges(放置红色框的地方)

我希望将它们放置在here上,以便它位于48x48x48区域的中心

我使用此功能获得随机位置:

  this.playArea = [9600, 9600]
  getRandomPosition(size) {
    const x = getRandomInt(0, this.playArea[0] / size);
    const y = getRandomInt(0, this.playArea[1] / size);
    return { x: x * size, y: y * size };
  }
  position = getRandomPosition(48)

我可能只需要向函数添加一个简单的数学运算,但是我不知道什么。

1 个答案:

答案 0 :(得分:0)

将随机数生成器限制为较小的尺寸

您遇到的问题是由于允许值太靠近边缘而引起的。为了补救,您需要像这样通过widthOfGrid - widthOfBoxheightOfGrid - heightOfBox

  this.playArea = [9600, 9600]
  getRandomPosition(size) {
    const x = getRandomInt(1, (this.playArea[0] - size) / size);
    const y = getRandomInt(1, (this.playArea[1] - size) / size);
    return { x: x * size, y: y * size };
  };

那应该只产生直到边缘减去size之一的数字。