我正在为一个 javascript 项目创建一个扫雷游戏,但遇到了一个我无法理解的问题。当你在扫雷游戏中为那些不知道的人点击一个空单元格(一个周围没有任何地雷,因此不显示数字的单元格)时,这将显示整个相邻的空单元格块,当找到包含这些空块的“数字墙”时停止。下面的例子:
[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 是单击空白块的情况,因此需要修改此代码,但我真的想不出该怎么做。
据我所知,我需要revealGridContents();
从案例 0 调用该函数,但为我要检查的每个正方形传入 xClick 和 yClick 的新值(数组位置的 x 和 y 值)。
任何有助于阐明我下一步需要做什么的帮助将不胜感激!