我正在创建一个游戏,我用它们的 id 的二维数组来表示盒子。
var grid = [[X,X,X,X,X,X,X,X,X,X],
[X,X,4,4,4,4,X,X,X,X],
[X,3,3,3,3,X,X,X,X,X],
[X,X,X,2,2,2,2,X,X,X],
[X,1,1,1,1,5,5,5,5,5]];
盒子堆叠在一起,X 代表一个空白点。
如果其中一个框被删除,我希望上面的任何框(可以适合)向下移动。所以它们总是整齐地堆放着。
因此,如果我要删除 ID 为 1 的框,我会得到一个像这样的新网格:
var grid = [[X,X,X,X,X,X,X,X,X,X],
[X,X,4,4,4,4,X,X,X,X],
[X,3,3,3,3,X,X,X,X,X],
[X,X,X,2,2,2,2,X,X,X],
[X,X,X,X,X,5,5,5,5,5]];
然后我希望 Box: 3 像这样滑入它的位置:
var grid = [[X,X,X,X,X,X,X,X,X,X],
[X,X,4,4,4,4,X,X,X,X],
[X,X,X,X,X,X,X,X,X,X],
[X,X,X,2,2,2,2,X,X,X],
[X,3,3,3,3,5,5,5,5,5]];
最后 Box: 4 应该向下移动到 3 所在的位置:
var grid = [[X,X,X,X,X,X,X,X,X,X],
[X,X,X,X,X,X,X,X,X,X],
[X,X,4,4,4,4,X,X,X,X],
[X,X,X,2,2,2,2,X,X,X],
[X,3,3,3,3,5,5,5,5,5]];
有没有一种简单的方法可以做到这一点?我正在考虑一个回调,当一个盒子被破坏时检查网格,但我想出的主要是 IF 语句。那里有优雅的东西吗?
盒子类本身也有起始位置和长度:
box = {id: 3,
start: 1,
length: 4};