如果我有一列卡片,比如:
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"];这两张牌都在甲板上。
到目前为止还不错,但是现在我想数一下用户拥有的点数,在这种情况下是7,我需要一种分配值的方法来计算卡片和Aces。我已经创建了一个函数,但是在某个地方它是错误的,我一直得到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;
}
}
}发布于 2017-01-25 11:55:38
userHand[i] == "AH" || "AS" || "AD" || "AC"会产生一个真实的值。您需要检查每一张卡套装的相等性,而不仅仅是将它们放在一起。
userHand[i] == "AH" || userHand[i] == "AS" ||
userHand[i] == "AD" || userHand[i] == "AC"这里有很大的改进空间,以保持干燥,但这解决了您的根本问题。可以在codereview.stackexchange.com上随意询问
https://stackoverflow.com/questions/41850977
复制相似问题