对于Teeter html5游戏,如何生成它们之间具有“增量”的随机数

时间:2013-08-13 16:36:15

标签: javascript html5 html5-canvas

我正在开发一个跷跷板游戏,我需要一些帮助。

现在,我在HTML5画布上随机生成10个点的坐标。

让我们说画布是500像素乘500像素 - 我已经使点数产生在100到400之间,从而将它们的位置集中在画布边界之外。

为此,我使用函数 randomFromInterval() - xw xh 表示画布的高度和宽度。

从这10个点(每个点在画布上有x和y坐标): - 5分将成为十字架的中心 - 5分将是

的中心

当球(用户导航)越过十字架时,如果他落入一个他失去的洞中,他将获得积分。

这是我的问题:

由于数字的随机性 - 某些坐标与其他坐标的距离太近 - 所以我可以在十字架上绘制一个“洞”的一部分。

现在,一些随机数可以是:[1,5]和[2,6]

如果我在x = 1和y = 5(画布上的坐标)上绘制交叉并在x = 2和y = 6处绘制,那两个会重叠。

以下是代码:

function randomFromInterval(from,to){
    return Math.floor(Math.random()*(to-from+1)+from);
}

function crossesAndHoles(){
        var crossx, crossy, col;
        for(var i=0; i<=10; i++){
            crossPos = [];
            crossx = randomFromInterval(100, xw-100); // the xw  is the width of the canvas
            crossy = randomFromInterval(100, xh-100); // the xh is the height of the canvas
            col = checkcollision(crossx, crossy, xdim); // here I check the collision with the maze which is drew on the canvas
            if((crossx != crossy) && col == 0){
                crossPos.push(crossx);
                crossPos.push(crossy);
                crossesPos.push(crossPos);
            }
        }
    }

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

对于生成的每个新坐标,您可以检查其与先前生成的坐标的距离...如果距离太近,则生成一个新坐标。