0
如果我的卡就像一個數組:甲板的卡(陣列),得到一個處理手的價值
var deck = ["AH", "AS", "AD", "AC", "2H", "2S", "2D", "2C", "3H", "3S", "3D", "3C", "4H", "4S", "4D", "4C", "5H", "5S", "5D", "5C", "6H", "6S", "6D", "6C", "7H", "7S", "7D", "7C", "8H", "8S", "8D", "8C", "9H", "9S", "9D", "9C", "10H", "10S", "10D", "10C", "JH", "JS", "JD", "JC", "QH", "QS", "QD", "QC", "KH", "KS", "KD", "KC"];
和處理2的用戶的:
var userHand = deck.splice([Math.floor(Math.random()*deck.length)+1], 1);
userHand.push(deck.splice([Math.floor(Math.random()*deck.length)+1], 1).join(""))
我得到像這樣的東西:
["5S", "2H"];
而這些2張牌是在甲板之外。
到目前爲止這麼好,但現在我想要計算用戶擁有的積分,在這種情況下,它將是7.我需要一種方法來爲數字卡片和Ace分配數值。 我創建了一個功能,但它是錯誤的地方,我不斷收到2:
function countPoints(){
for (let i = 0; i < userHand.length; i++){
if (userHand[i] == "AH" || "AS" || "AD" || "AC") {
userPoints += 1;
} else if (userHand[i] == "2H" || "2S" || "2D" || "2C") {
userPoints += 2;
} else if (userHand[i] == "3H" || "3S" || "3D" || "3C") {
userPoints += 3;
} else if (userHand[i] == "4H" || "4S" || "4D" || "4C") {
userPoints += 4;
} else if (userHand[i] == "5H" || "5S" || "5D" || "5C") {
userPoints += 5;
} else if (userHand[i] == "6H" || "6S" || "6D" || "6C") {
userPoints += 6;
} else if (userHand[i] == "7H" || "7S" || "7D" || "7C") {
userPoints += 7;
} else if (userHand[i] == "8H" || "8S" || "8D" || "8C") {
userPoints += 8;
} else if (userHand[i] == "9H" || "9S" || "9D" || "9C") {
userPoints += 9;
} else if (userHand[i] == "10H" || "10S" || "10D" || "10C") {
userPoints += 10;
} else if (userHand[i] == "JH" || "JS" || "JD" || "JC") {
userPoints += 10;
} else if (userHand[i] == "QH" || "QS" || "QD" || "QC") {
userPoints += 10;
} else if (userHand[i] == "KH" || "KS" || "KD" || "KC") {
userPoints += 10;
}
}
}
如何而不是有一個列表字符串作爲甲板 - 有一個對象列表,每個對象將有兩個屬性:名稱和點 – classicalConditioning
正如其他用戶指出的,問題是OR條件的語法。但是,如果您確定所有字符串都是格式良好的,您可以擺脫那麼大的代碼塊,並用'userPoints + = parseInt(userHand [i])||代替它。 userHand [i] [0] =='A'&& 1 || 10;' – Gio