2017-04-21 46 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