所以我有一个玩家牌的阵列,在这种情况下我想要计算经销商所拥有的积分,游戏是二十一点,在这个游戏中,经销商展示他的第一张牌而另一张仍然是隐藏的,所以我想计算经销商没有第二张卡的积分;
pontosBanca.textContent = 'Pontos : ' + calcCount(cartasBanca[0]);
我可以这样做,而不是
下面的行pontosBanca.textContent = 'Pontos : ' + calcCount(cartasBanca);
问题在于,当dealear有10张卡时,积分数始终是1。
这是calcCount函数{
function calcCount(cartas){
var sum = 0;
for(var x = 0;x<cartas.length;x++){
if(cartas[x] === 'V' || cartas[x] === 'D' || cartas[x] === 'K' || cartas[x] === '10') sum += 10;
else if(cartas[x] === 'A') sum += 1;
else{
sum += parseInt(cartas[x]);
}
}
return sum;
请注意我可以删除这个条件(|| cartas [x] ===&#39; 10&#39;)因为else子句会产生相同的结果,但是如果我删除它,结果也会是1
并且最后如果我使用此功能计算整个经销商手牌的点数,包括第二张牌,结果将是正确的,例如经销商卡牌:10和2,calcCount将返回12。 / p>
希望我没有让你感到困惑,对js不熟悉,感谢您的帮助
输出如果我使用calcCount来计算只有一张卡的点数 http://tinypic.com/view.php?pic=e7kxzq&s=9#.WLLnfTuLTsA
如果我将整个手作为输入给出,那么这将是输出 http://tinypic.com/view.php?pic=azhun9&s=9
注意:经销商意味着banca
html
<!DOCTYPE html>
<html>
<head>
<title>BlackJack by RuiVieira</title>
</head>
<body>
<div id="zonaBanca">
<h1>Banca</h1>
<p id="pontosBanca">Pontos : </p>
</div>
<div id="zonaJogoBanca">
<p id="jogoBanca">-</p>
</div>
<div id="zonaJogador">
<h1>Jogador</h1>
<p id="pontosJogador">Pontos : </p>
</div>
<div id="zonaJogoJogador">
<p id="jogoJogador">-</p>
</div>
<div id="zonaAposta">
<h2>Aposta</h2>
<button id="subir">+1</button>
<button id="parar">stop</button>
<div>
<input id="valorAposta" type="number" min="0" step="1"/>
</div>
<div>
<button id="botaoAposta">Apostar</button>
</div>
</div>
<script src="scripts/blackj.js"></script>
</body>
</html>
的JScript
var inputvalorAposta = document.getElementById('valorAposta');
inputvalorAposta.defaultValue = 1;
botaoAposta.onclick = function() {
var valorAposta = inputvalorAposta.value;
if(valorAposta = document.getElementById('valorAposta').value.length !== 0){
var baralho = ['A','2','3','4','5','6','7','8','9','10','V','D','K', 'A','2','3','4','5','6','7','8','9','10','V','D','K',
'A','2','3','4','5','6','7','8','9','10','V','D','K', 'A','2','3','4','5','6','7','8','9','10','V','D','K'];
iniciaJogo(valorAposta, baralho);
}
else{
}
}
function iniciaJogo(valorAposta1, baralho){
var nrcartasJogador = 0;
var nrcartasBanca = 0;
var valorAposta = valorAposta1;
var bancaCount = 0;
var jogadorCount = 0;
var cartasBanca = [];
var cartasJogador = [];
var cartasUtilizadas = [];
var card1;
do{
card1 = Math.floor((Math.random() * baralho.length) + 0);
}while(baralho[card1] === undefined);
cartasBanca.push(baralho[card1]);
delete baralho[card1];
do{
card1 = Math.floor((Math.random() * baralho.length) + 0);
}while(baralho[card1] === undefined);
cartasJogador.push(baralho[card1]);
delete baralho[card1];
do{
card1 = Math.floor((Math.random() * baralho.length) + 0);
}while(baralho[card1] === undefined);
cartasBanca.push(baralho[card1]);
delete baralho[card1];
do{
card1 = Math.floor((Math.random() * baralho.length) + 0);
}while(baralho[card1] === undefined);
cartasJogador.push(baralho[card1]);
delete baralho[card1];
var pontosBanca = document.getElementById('pontosBanca');
var pontosJogador = document.getElementById('pontosJogador');
pontosBanca.textContent = 'Pontos : ' + calcCount(cartasBanca[0]);
pontosJogador.textContent = 'Pontos : ' + calcCount(cartasJogador);
nrcartasJogador = 2;
nrcartasBanca = 2;
var jogoBanca = document.getElementById('jogoBanca');
var jogoJogador = document.getElementById('jogoJogador');
jogoBanca.textContent = cartasBanca[0];
jogoBanca.textContent += ' #';
jogoJogador.textContent = cartasJogador[0] + ' ';
jogoJogador.textContent += cartasJogador[1];
var butaoSubir = document.getElementById('subir');
var butaoParar = document.getElementById('parar');
butaoSubir.onclick = function() {
var countCard = 0;
for(var x = 0;x<baralho.length;x++){
if(baralho[x] === undefined)countCard++;
}
if(countCard === 52)return;
do{
/*
baralho tem os mesmo elementos já que o delete substui o valor por undefined, no limite o baralho é composto por 52
*/
card1 = Math.floor((Math.random() * baralho.length) + 0);
}while(baralho[card1] === undefined);
cartasJogador.push(baralho[card1]);
delete baralho[card1];
jogoJogador.textContent += ' ' + cartasJogador[nrcartasJogador];
nrcartasJogador++;
if(calcCount(cartasJogador) <= 21)pontosJogador.textContent = 'Pontos : ' + calcCount(cartasJogador);
else(pontosJogador.textContent = 'Pontos : ' + calcCount(cartasJogador) + ' Rebentou');
}
butaoParar.onclick = function() {
jogoBanca.textContent = cartasBanca[0] + ' ' + cartasBanca[1];
pontosBanca.textContent = 'Pontos : ' + calcCount(cartasBanca);
}
}
/*
CALCULO DE PONTOS
*/
function calcCount(cartas){
var sum = 0;
for(var x = 0;x<cartas.length;x++){
if(cartas[x] === 'V' || cartas[x] === 'D' || cartas[x] === 'K') sum += 10;
else if(cartas[x] === 'A') sum += 1;
else{
sum += parseInt(cartas[x]);
}
}
return sum;
}
/**/
答案 0 :(得分:0)
编辑:作为一个补充,我觉得它与事实有关,'10'需要2个charcaters。每张其他牌只有一个字符,如'9'或'K'
如果是10,则不构建数组作为calCount()函数的输入。它更像是['10']
的参数'10'我使用了console.log(cartas);和console.log(sum);
cartas 6
sum 6
cartas ["6", "2"]
sum 8
cartas 10 //its a string not an array of strings
sum 1
cartas ["A", "4"]
sum 5