JavaScript 切换语句
JavaScript switch statement
我正在尝试编写 Black Jack 游戏,但我需要一些帮助来弄清楚如何根据需要在 1 和 11 之间切换 A 牌的点数。这是我目前拥有的功能。
function cValue(card){
if (typeof(card) === "string"){
switch(card){
case 'J':
case 'Q':
case 'K':
return 10;
break;
case 'A':
return 11;
break;
}
}
else return card;
}
很简单:在逻辑的另一点上,需要确定 A 是 1 还是 11...
但是添加在该特定函数中选择 returns 1 或 11 的能力就足够简单了:
function cValue(card, aceIs1)
{
if (typeof card === "string") {
switch(card) {
case 'J':
case 'Q':
case 'K':
return 10;
case 'A':
return aceIs1 ? 1 : 11;
}
}
else return card;
}
这样你就有了一个可选的参数,你可以发送这个参数来生成 ace return 1.
cValue('A'); // -> 11
cValue('A', false); // -> 11
cValue('A', true); // -> 1
但是,这对您的程序是否有用取决于您编写游戏的方式。
您很可能需要做更多的事情planning/structuring,因为在计算您需要确定手中是否有 A 的点数并减去每个 A 10 个,直到你未满 21 岁,只有当没有足够的 A 到 21 岁以下时,才称之为半身像。
比如,如果你有一个像 var hand = [9, 'A', 'A']
这样的牌值数组,你可以有一个函数来计算总手数,如下所示:
function calculateHand(hand)
{
var total = 0, aces = 0, card;
for (var i = 0, ii = hand.length; i < ii; i++)
{
card = hand[i];
if (typeof card === 'number') { total += card; }
else if (card === 'A') { total += 11; aces++; }
else { total += 10; }
}
while (total > 21 && aces > 0)
{ total -= 10; aces--; }
return total;
}
calculateHand(['A', 8]); // -> 19
calculateHand(['A', 8, 'A']); // -> 20
calculateHand(['A', 8, 'A', 'A']); // -> 21
我正在尝试编写 Black Jack 游戏,但我需要一些帮助来弄清楚如何根据需要在 1 和 11 之间切换 A 牌的点数。这是我目前拥有的功能。
function cValue(card){
if (typeof(card) === "string"){
switch(card){
case 'J':
case 'Q':
case 'K':
return 10;
break;
case 'A':
return 11;
break;
}
}
else return card;
}
很简单:在逻辑的另一点上,需要确定 A 是 1 还是 11...
但是添加在该特定函数中选择 returns 1 或 11 的能力就足够简单了:
function cValue(card, aceIs1)
{
if (typeof card === "string") {
switch(card) {
case 'J':
case 'Q':
case 'K':
return 10;
case 'A':
return aceIs1 ? 1 : 11;
}
}
else return card;
}
这样你就有了一个可选的参数,你可以发送这个参数来生成 ace return 1.
cValue('A'); // -> 11
cValue('A', false); // -> 11
cValue('A', true); // -> 1
但是,这对您的程序是否有用取决于您编写游戏的方式。
您很可能需要做更多的事情planning/structuring,因为在计算您需要确定手中是否有 A 的点数并减去每个 A 10 个,直到你未满 21 岁,只有当没有足够的 A 到 21 岁以下时,才称之为半身像。
比如,如果你有一个像 var hand = [9, 'A', 'A']
这样的牌值数组,你可以有一个函数来计算总手数,如下所示:
function calculateHand(hand)
{
var total = 0, aces = 0, card;
for (var i = 0, ii = hand.length; i < ii; i++)
{
card = hand[i];
if (typeof card === 'number') { total += card; }
else if (card === 'A') { total += 11; aces++; }
else { total += 10; }
}
while (total > 21 && aces > 0)
{ total -= 10; aces--; }
return total;
}
calculateHand(['A', 8]); // -> 19
calculateHand(['A', 8, 'A']); // -> 20
calculateHand(['A', 8, 'A', 'A']); // -> 21