我正在开发一个跷跷板游戏,我需要一些帮助。
现在,我在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);
}
}
}
有什么想法吗?
答案 0 :(得分:1)
对于生成的每个新坐标,您可以检查其与先前生成的坐标的距离...如果距离太近,则生成一个新坐标。