2017-04-21 47 views
1

這是多米諾骨牌遊戲的一部分,我在遞歸函數中設置了三個參數,並對它們進行迭代以對齊玩家芯片。我想知道有什麼不對的地方,只顯示前兩個選手的籌碼TT帶1 ++參數的javascript reccursion

這是代碼:

function messUp() { 
 
fichas=[]; 
 
for (i=0;i<7;i++) { 
 
    for (e=0;e<=i;e++) { 
 
     fichas.push('['+i+','+e+']'); 
 
    } 
 
} 
 
fichas.sort(function(){return Math.random()-0.5}); 
 
document.write(fichas+'<br/><br/>'); 
 
} 
 
messUp(); 
 

 
function players(name,hand) { 
 
this.name=name; 
 
this.hand=hand; 
 
} 
 

 
var main=prompt("Ingrese su nombre",""); 
 

 
function reAsign(h,f,l) { 
 
if (h<4) { 
 
    toHand=[]; 
 
    for (f;f<l;f++) { 
 
     toHand.push(fichas[f]); 
 
     delete fichas[f]; 
 
    } 
 
    switch (h) { 
 
     case 0: { 
 
      player1=new players(main,toHand); 
 
      l=14; 
 
     } 
 
     break; 
 
     case 1: { 
 
      player2=new players("Player 2",toHand); 
 
      l=21; 
 
     } 
 
     break; 
 
     case 2: { 
 
      player3=new players("Player 3",toHand); 
 
      l=28; 
 
     } 
 
     break; 
 
     case 3: { 
 
      player4=new players("Player 4",toHand); 
 
     } 
 
     break; 
 
    } 
 
    reAsign(h+1,f+7,l+7); 
 
} 
 
} 
 
reAsign(0,0,7); 
 

 
document.write(player1.name+'<br/>'); 
 
document.write(player1.hand+'<br/>'); 
 
document.write(player2.name+'<br/>'); 
 
document.write(player2.hand+'<br/>'); 
 
document.write(player3.name+'<br/>'); 
 
document.write(player3.hand+'<br/>'); 
 
document.write(player4.name+'<br/>'); 
 
document.write(player4.hand+'<br/>');

+0

如果你想測試,這是一個工作能夠部分 – gAbad

+0

爲什麼'刪除fichas [F]的代碼;'行有必要嗎? – Bernard

+0

那麼,現在......沒有必要。讓我檢查它是如何工作的。謝謝 – gAbad

回答

0

的原因是因爲該行

reAsign(h+1,f+7,l+7); 

f已經是+7'd因爲你重複了它。當你+7在最後它從714所以它跳過 - 所以2實際上是3的數字,然後沒有任何剩餘的4

l一樣。

它應該是:

reAsign(h+1,f,l); 

function messUp() { 
 
fichas=[]; 
 
for (i=0;i<7;i++) { 
 
    for (e=0;e<=i;e++) { 
 
     fichas.push('['+i+','+e+']'); 
 
    } 
 
} 
 
fichas.sort(function(){return Math.random()-0.5}); 
 
document.write(fichas+'<br/><br/>'); 
 
} 
 
messUp(); 
 

 
function players(name,hand) { 
 
this.name=name; 
 
this.hand=hand; 
 
} 
 

 
var main=prompt("Ingrese su nombre",""); 
 

 
function reAsign(h,f,l) { 
 
if (h<4) { 
 
    toHand=[]; 
 
    for (f;f<l;f++) { 
 
     toHand.push(fichas[f]); 
 
     //delete fichas[f]; 
 
    } 
 
    switch (h) { 
 
     case 0: { 
 
      player1=new players(main,toHand); 
 
      l=14; 
 
     } 
 
     break; 
 
     case 1: { 
 
      player2=new players("Player 2",toHand); 
 
      l=21; 
 
     } 
 
     break; 
 
     case 2: { 
 
      player3=new players("Player 3",toHand); 
 
      l=28; 
 
     } 
 
     break; 
 
     case 3: { 
 
      player4=new players("Player 4",toHand); 
 
     } 
 
     break; 
 
    } 
 
    reAsign(h+1,f,l); 
 
} 
 
} 
 
reAsign(0,0,7); 
 

 
document.write(player1.name+'<br/>'); 
 
document.write(player1.hand+'<br/>'); 
 
document.write(player2.name+'<br/>'); 
 
document.write(player2.hand+'<br/>'); 
 
document.write(player3.name+'<br/>'); 
 
document.write(player3.hand+'<br/>'); 
 
document.write(player4.name+'<br/>'); 
 
document.write(player4.hand+'<br/>');

+0

嘿@Albzi,謝謝。它的工作原理 – gAbad

+0

哇,我正在考慮T.T的問題...謝謝 – gAbad

+0

不用擔心@gAbad - 如果它解決了您的問題,請點擊答案的左側的刻度:) – Albzi