2011-07-04 78 views
1

我想要一種方法來加載52個卡片而不必硬編碼。 我有一個數組suits,其中包含每個訴訟的「H」,「C」,「S」,「D」前綴。 我需要有一個單一的數組cards[52]與值H1-H13,S1-S13等 我面臨的問題是我可以加載cards[0]cards[12]相當容易,但我如何加載下一張卡在cards[13]加載一個卡片堆棧

回答

2

你可以做這樣的事情:

var suits = new Array("H", "C", "S", "D"); 
var cards = new Array(); 
// changed 3 to 4 to display all four suits 
var cnt = 0; 
for(i=0; i<4; i++) 
    for(j=1; j<=13; j++) 
     cards[cnt++] = suits[i] + j; 
+0

這似乎相當對,謝謝你親愛的先生 – maverick340

0

您可以所有52張加載到一個數組,你在想:

var suits = ['H', 'C', 'S', 'D']; 
var cards = []; 
var suitIndex = 0; 

for(var i = 0 i < 52; i++) { 
    cards.push(suits[suitIndex] + (i % 13)); 

    // if remainder after division by 13 is zero, 
    // you know you've hit a multiple of 13 and need to switch suits. 
    if (i % 13 == 0 && suitIndex < suits.length) { 
    suitIndex++; 
    } 
} 

或者你也可以創建4個不同的卡陣列並在填寫一個時切換到另一個陣列。

+0

謝謝,我會試試這個,讓你知道。 編輯:不,我仍然有'卡片[21]'作爲S21 – maverick340

+0

糟糕...需要微調 - 需要將我除以13,並採取餘數......無論如何,這只是僞代碼,只是爲了讓你正確的道路..你可以找出其餘的。 – Kon

0

嘗試:

var suits = ["H", "C", "S", "D"], cards = [], n = 0; 
while(n < 4){ 
    for(i = 1; i < 13; i++) 
     cards.push(suits[n] + i); 
    n++; 
} 
0

坦率地說沒有任何充分的理由來動態生成甲板的時候可以用手更快,在短短的幾行做到這一點:

var cards = [ 
    "H1", "H2", "H3", "H4", "H5", "H6", "H7", 
    "H8", "H9", "H10", "H11", "H12", "H13", 
    "C1", "C2", "C3", "C4", "C5", "C6", "C7", 
    "C8", "C9", "C10", "C11", "C12", "C13", 
    "S1", "S2", "S3", "S4", "S5", "S6", "S7", 
    "S8", "S9", "S10", "S11", "S12", "S13", 
    "D1", "D2", "D3", "D4", "D5", "D6", "D7", 
    "D8", "D9", "D10", "D11", "D12", "D13" 
]