ID の 2 次元配列でボックスを表すゲームを作成しています。
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 は空白の場所を表します。
ボックスの 1 つが削除された場合、上のボックス (収まる) のいずれかを下に移動します。そのため、常にきれいに積み上げられています。
したがって、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};