2013-12-20 91 views
2
function rolldice() { 
    var x = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    var y = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    var dicetotal = x + y; 
    var double = 0; 
    $('.dice1').attr('id', "dice" + x); 
    $('.dice2').attr('id', "dice" + y); 
    if (x == y) { //<----checking if there is a double 
     var double = double++; //<---increment double count 
     //Now reroll the dice, but if you hit 3 doubles in a row, you get message go to jail. 
    } 
}; 

我想知道我是否需要一些循環...請幫助我。這是壟斷遊戲的一部分。我需要在代碼中添加什麼,以便在出現重複時使其循環。javascript中的骰子滾動

+5

不要叫你的變量'double'。你以後會感謝我。 –

+1

如果您在此處添加循環,則無法接受兩個滾輪之間的用戶輸入。這真的是你想要的大富翁遊戲? – user1781290

+0

第二個'var double'是一個重新定義。只需'雙++'就足夠了。 – thebjorn

回答

1

你只需要做出一個遞歸調用:

var dbl = 0; 
function rolldice() { 
    var x = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    var y = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    var dicetotal = x + y; 
    $('.dice1').attr('id', "dice" + x); 
    $('.dice2').attr('id', "dice" + y); 
    if (x == y) { //<----checking if there is a double 
     dbl++; //<---increment double count 
     if(dbl%3==0) $('.out').attr('id', "jail"); 
     //Now reroll the dice, but if you hit 3 doubles in a row, you get message go to jail. 
     rolldice(); 
    } 
}; 
+0

「double」是一個限制/保留字。請重命名您的變量。 – Dropout

+0

我不確定你在做什麼@ If(dbl%3 == 0)?我知道你正在檢查dbl是否等於3,但不確定你爲什麼有%。 –

+0

如果dbl餘數爲0,則可以被3整除(modulo op),然後可以將dbl重置爲0,如果需要等等 – LXSoft

0

我認爲你需要像這樣創造的東西:

var double = 0; 

function rolldice(){ 

    var x = Math.floor(Math.random() * ((6-1)+1) + 1); 
    var y = Math.floor(Math.random() * ((6-1)+1) + 1); 

    var dicetotal = x + y; 
    $('.dice1').attr('id', "dice" + x); 
    $('.dice2').attr('id', "dice" +y); 

    if(x==y) { 
     if (double < 3) { 
      double++; // increase dobule 
      rolldice(); // Call rolldice again... 
     } else { 
      // Here there is 3 in a row.... 
     } 
    } 
} 
0

這有一定的併發症。當玩家發生變化時,您需要重置變量的值來檢查雙卷。

執行以下操作:

var dblRolls; 
function userChange(){//call this on change of user 
    dblRolls=0; 
    rollDice(); 
} 
function rolldice() { 
    var x = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    var y = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    var dicetotal = x + y; 
    var double = 0; 
    $('.dice1').attr('id', "dice" + x); 
    $('.dice2').attr('id', "dice" + y); 
    if (x == y) { //<----checking if there is a double 
     dblRoll++; //<---increment double count 
     if(dblRoll==3) 
     //jail 
     else 
      rollDice(); 
    } 

};

0

請勿使用循環。

,而不是從自身內部計數器加雙打作爲rolldice()函數的參數,調用函數:

function rolldice(doubleCount) { 
    var x = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    var y = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    var dicetotal = x + y; 
    $('.dice1').attr('id', "dice" + x); 
    $('.dice2').attr('id', "dice" + y); 
    if (x == y) { //<----checking if there is a double 
     doubleCount++; 
     if (doubleCount == 3) 
     { 
      //go to jail 
     } 
     else 
     { 
      rolldice(doubleCount); 
     } 
    } 
}; 

初始呼叫的玩家的第一個卷看起來像rolldice(0);

0

好吧,除了這是兩個多小時,已經有4個答案,我想增加我的2美分。

你說你想製作一個大富翁遊戲。在大多數(即使不是全部)骰子滾動之後,玩家必須做出決定。這意味着在每次滾動之後,您都等待用戶輸入(例如,按下某些按鈕)。

所有其他答案postet建議以某種方式使用遞歸調用。相反,我建議將當前玩家的雙打數與一些全局變量一起存儲。你不使用一個循環,而是類似:

var doubleCount = 0; 

function rolldice() { 
    var x = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    var y = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    var dicetotal = x + y; 
    $('.dice1').attr('id', "dice" + x); 
    $('.dice2').attr('id', "dice" + y); 
    if (x == y) { //<----checking if there is a double 
     doubleCount++; //<---increment double count 
     if (doubleCount > 2) { 
      // Got to Jail 
     } 
    } 
    // Proceed as usual and come back to this, when the user presses the "Roll" Button again 
}; 
-1

此腳本工作:

function rollDice(){ 
    var dice1 = document.getElementById("dice1"); 
    var dice2 = document.getElementById("dice2"); 
    var status = document.getElementById("status"); 
    var d1 = Math.floor(Math.random() * 6) + 1; 
    var d2 = Math.floor(Math.random() * 6) + 1; 
    var diceTotal = d1 + d2; 
    dice1.innerHTML = d1; 
    dice2.innerHTML = d2; 
    status.innerHTML = "You rolled "+diceTotal+"."; 
    if(d1 == d2){ 
     status.innerHTML += "<br />DOUBLES! You get a free turn!!"; 
    } 
} 
0

這是一個可能的解決方案。

function rolldice(dbl=0){ 
var x = Math.floor(Math.random()*((6-1)+1) + 1); 
var y = Math.floor(Math.random()*((6-1)+1) + 1); 
if(x===y){ 
    if(dbl!==3){ 
     dbl++; 
     rolldice(dbl); 
    }else{ 
     //goto jail 
    } 
}else{ 
    //no double 
    dbl=0; 
} 
} 

function rolldice(dbl=0){ 
var x = Math.floor(Math.random()*((6-1)+1) + 1); 
var y = Math.floor(Math.random()*((6-1)+1) + 1); 
if(x===y&&dbl!==3) 
    dbl++; 
    rolldice(dbl); 
}else if(x===y&&dbl===3){ 
    //goto jail 
}else{ 
    //no double 
    dbl=0; 
} 
}