擦除数组

时间:2016-04-30 07:25:45

标签: javascript arrays frontend

我正在制作一款游戏,你点击一块巧克力碎片,所有巧克力碎片在正上方的碎片之间以及右边的所有巧克力碎片都会消失。 (包括点击的片段)

例如, this 是单击某个部分时应该发生的事情。

(注意:不同的规则适用于绿色部分,如果您点击它然后丢失并且游戏重置。)

我的问题是,无论何时点击一块,我都无法弄清楚除了点击的方块之外,如何按照之前的规则“消失”。

这是我的伪代码,用于删除其他部分应该如何工作:

  • 循环遍历数组,将数组中的每个项目与单击的单元格位置进行比较。
  • 如果阵列中的单元格与所单击的单元格相比处于正确位置(根据前面所述的规则),则将其删除。

我已正确实施了第一步,但我似乎无法让第二步工作。

如何在图像中显示删除单元格?

以下是第一步的骨架:

 cellClick = function (cell) {
  var a,
    //get (x,y) coordinates from array tableData
    x = cell.pos.x,
    y = cell.pos.y;
  //make all cells above, to the right, and inbetween, fade appropriate cells
       for (a = 0; a < tableData.length; a++) {
        //check each element to see what it's (x,y) is compared to click cell, then delete.

       }

Here 是我的完整代码。

1 个答案:

答案 0 :(得分:0)

我建议使用一个包含单元格状态的数组。

在这种情况下,我使用X和空格,在实际项目中我会使用truefalse或其他一些状态标记。

设置零件的功能从第一行到选定行,从所选项目到行尾。

aswer在ES6中,因为给定的链接使用ES6。

function setOff(y, x) {
    var i, j = 0;

    while (j <= y) {
        i = x;
        while (i < table[j].length) {
            table[j][i] = ' ';
            i++;
        }
        j++;
    }
}

var table = Array.apply(null, { length: 6 }).map(() =>
    Array(8).fill('X')
);

setOff(2, 6);

document.write('<pre>' + table.map(a => a.join('')).join('\n') + '</pre>');