マルチプレイヤー同期ダイスにnode.jsサーバーを使用していますが、参照または使用されていない変数の変更に関して奇妙な問題が発生しています...
var origonalRolls = rolls;
//identify epic fails
var epicFails = [];
for(var r = 0; r < rolls.length; r++)
if(rolls[r] === 1)
epicFails.push(r);
console.log("TEST 1 :: " + JSON.stringify(rolls));
console.log("TEST 2 :: " + JSON.stringify(origonalRolls));
//remove epic fails and the corresponding heighest
if(epicFails.length > 0){
for(var i = epicFails.length-1; i >= 0; i--){
rolls.splice(epicFails[i], 1);
if(rolls[rolls.length-1] >= success)
rolls.splice(rolls.length-1, 1);
}
}
console.log("TEST 3 :: " + JSON.stringify(rolls));
console.log("TEST 4 :: " + JSON.stringify(origonalRolls));
上記は、1である配列内の任意の要素を見つけて、rolls
それをに追加する必要がありepicFails
ます。rolls
次に、残りの最も重いロールからそれを削除する必要があります。(注、rolls
数値でソートされています)
何らかの理由で、このコードセグメントの出力は次のようになります。
TEST 1 :: [1,1,2,3,3,6,7,7,9,9]
TEST 2 :: [1,1,2,3,3,6,7,7,9,9]
TEST 3 :: [2,3,3,6,7,7]
TEST 4 :: [2,3,3,6,7,7]
理由がわからないので、同じようrolls
にorigonalRolls
開始して同じように終了します。使用しているのはrolls
。
この問題の助けや説明は大歓迎です、それは長い間私を悩ませてきました...