打印变量jscript时的值错误

时间:2017-02-26 14:25:56

标签: javascript html

所以我有一个玩家牌的阵列,在这种情况下我想要计算经销商所拥有的积分,游戏是二十一点,在这个游戏中,经销商展示他的第一张牌而另一张仍然是隐藏的,所以我想计算经销商没有第二张卡的积分;

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;


}

/**/

1 个答案:

答案 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
相关问题