我正在为一个JavaScript项目创建一个扫雷游戏,并遇到了一个问题,我无法让我的脑袋回合。当你在扫雷游戏中点击一个空单元(没有任何地雷的单元,因此不显示数字)时,这将显示与其他单元相邻的空单元格块,当找到包含这些空块的“数字墙”时停止。下面的实施例:递归函数来检查2D数组
[1] http://datagenetics.com/blog/june12012/hole.png
这需要一个递归函数找出哪些块将被显现出来。我此刻代码只揭示了被点击的块:
function revealGridContents()
{
switch (positionClickContents)
{
case 0:
ctx.drawImage(clickedImage, (xClick*20), (yClick*20));
break;
case 1:
ctx.drawImage(num1Image, (xClick*20), (yClick*20));
break;
case 2:
ctx.drawImage(num2Image, (xClick*20), (yClick*20));
break;
case 3:
ctx.drawImage(num3Image, (xClick*20), (yClick*20));
break;
case 4:
ctx.drawImage(num4Image, (xClick*20), (yClick*20));
break;
case 5:
ctx.drawImage(num5Image, (xClick*20), (yClick*20));
break;
case 6:
ctx.drawImage(num6Image, (xClick*20), (yClick*20));
break;
case 7:
ctx.drawImage(num7Image, (xClick*20), (yClick*20));
break;
case 8:
ctx.drawImage(num8Image, (xClick*20), (yClick*20));
break;
};
};
传递到switch语句的数量是数组grid[xClick][yClick]
在数据的值;例如4代表一个有4个地雷的地块,所以4的图像将被显示出来。
情况0是空白块被点击的情况,所以这个代码需要修改,但我真的无法想象该怎么做。
从我能理解的情况来看,我需要调用case 0中的revealGridContents();
函数,但为每个要检查的方格传入xClick和yClick的新值(数组位置的x和y值) 。
任何帮助阐明我下一步需要做的事情将不胜感激!