2012-06-16 20 views
0

在我的生成紙牌的腳本中,它生成一個0,即使我的隨機生成器正在添加1,所以它不應該是0.我做錯了什麼?如果刷新,你最終會得到一個「紅心0 /俱樂部/鑽石/黑桃」:Javascript:Mathfloor仍然生成一個0

var theSuit; 
var theFace; 
var theValue; 
var theCard; 

// deal a card 
function generateCard() { 
    var randomCard = Math.floor(Math.random()*52+1)+1; 
    return randomCard; 
}; 

function calculateSuit(card) { 
    if (card <= 13) { 
     theSuit = "Hearts"; 
    } else if ((card > 13) && (card <= 26)) { 
     theSuit = "Clubs";  
    } else if ((card > 26) && (card <= 39)) { 
     theSuit = "Diamonds"; 
    } else { 
     theSuit = "Spades"; 
    }; 

    return theSuit; 
}; 

function calculateFaceAndValue(card) { 
    if (card%13 === 1) { 
     theFace = "Ace"; 
     theValue = 11; 
    } else if (card%13 === 13) { 
     theFace = "King"; 
     theValue = 10;   
    } else if (card%13 === 12) { 
     theFace = "Queen"; 
     theValue = 10; 
    } else if (card%13 === 11) { 
     theFace = "Jack"; 
     theValue = 10; 
    } else { 
     theFace = card%13; 
     theValue = card%13; 
    }; 

    return theFace;  
    return theValue 
}; 

function getCard() { 
    var randomCard = generateCard();   
    var theCard = calculateFaceAndValue(randomCard); 
    var theSuit = calculateSuit(randomCard);    
    return theCard + " of " + theSuit + " (this card's value is " + theValue + ")"; 
}; 

// begin play 
var myCard = getCard(); 
document.write(myCard);` 

回答

4

這條線是有問題的:

} else if (card%13 === 13) { 

想想:如何除法的餘到13可能等於13? )它可能等於零(這就是當你得到'0'時會發生的情況),但決不會大於12 - 通過剩餘操作的定義。 )

順便說一句,+1在generateCard()是沒有必要的:0..51仍然給你相同範圍的卡片1..52,我想。

+0

謝謝!我知道這是我的數學技能讓我失落的地方。我知道我不需要+1,但它更容易以這種方式顯示卡組 – matski

3
card%13 === 13 

這將計算爲0如果card13a % n永遠不會是n。我想你的意思是:

card % 13 === 0 

return theFace;  
return theValue 

return退出函數;你永遠不會得到第二個陳述。

+0

+1作爲返回指針 – matski

相關問題