これはおそらく私が気付いていない簡単な解決策を持っています。次のコード(php / javascriptジグソーパズルコードから)を使用して、1つのオブジェクトを別のオブジェクト(パズルのピース)にマージしています。各マージ後にオブジェクトがいくつあるかをカウントして、オブジェクトが1つだけ残っている(パズルが解かれている)状態を確認できるようにしたいと思います。オブジェクトのhasownpropertiesの数をカウントする別の関数を作成しようとしましたが(パズルの難易度のレベルが異なる場合にこのスクリプトが複雑になるのを避けるために、オブジェクトのプロパティの数ではなく、マージされたオブジェクトの数をカウントしたいのですが)、仕事。提案?
var cluster = new Array();
function merge_cluster(a, b) {
for (i in cluster[b]) {
obj = dd.elements[cluster[b][i]];
cluster[a][obj.name] = obj.name;
obj.cluster = a;
}
}
function my_DropFunc() {
align_cluster(dd.obj.cluster);
for (r = -1; r <= 1; r++) {
for (c = -1; c <= 1; c++) {
if (c != 0 || r != 0) {
obj = dd.elements['t_' + (dd.obj.row + r) + '_' + (dd.obj.col + c)];
if (obj) {
if (dd.obj.x + c * < ? = $vw ? > == obj.x && dd.obj.y + r * < ? = $vh ? > == obj.y) {
merge_cluster(dd.obj.cluster, obj.cluster);
//this is probably the ideal place to do a count check since it runs every time a piece is dropped, only once, whereas the merge_cluster function runs multiple times when a new cluster is merged.
}
}
}
}
}
}