2017-02-26 49 views
-2

所以我有一個球員的卡陣列,在這種情況下,我想計算點經銷商,遊戲是二十一點,在這場比賽中,經銷商顯示他的第一張牌和其他人仍然隱藏,所以我想計算經銷商沒有第二張牌的點數;錯誤的價值,當打印變量jscript

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 ] ==='10')因爲else子句會產生相同的結果,但是如果我刪除它,結果也是1。

和最後,如果我用這個功能來計算整個發牌手的點,包括第二張牌的結果將是一個正確爲例經銷商卡:10和2 calcCount將返回12

希望我沒有讓你太糊塗了,新來的JS,感謝您的幫助

輸出,如果我使用calcCount如果我給作爲輸入整隻手這個數只有一張卡 http://tinypic.com/view.php?pic=e7kxzq&s=9#.WLLnfTuLTsA

的點將是輸出 http://tinypic.com/view.php?pic=azhun9&s=9

注:經銷商表示邦卡

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

請出示一個例子輸入。 – Carcigenicate

+0

http://tinypic.com/r/e7kxzq/9如果我只使用第一卡http://tinypic.com/r/azhun9/9 calcCount如果我calcCount給作爲參數整隻手 –

+0

而接下來的時間,請通過縮進4個空格來正確地格式化您的代碼。 – Carcigenicate

回答

0

編輯:作爲補充我有感覺它是與事實, '10'需要2個charcaters。每個其他卡片只有一個字符,如'9'或'K'

如果是十個,您不會構建一個數組作爲calCount()函數的輸入。這是相當inseadt [ '10']

我使用的console.log(cartas)的參數 '10';和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 
+0

請問您能否詳細說明 –

+0

我以前想過這個,但是例如6的結果是6,在這種情況下他只打印第一個數字我猜,我做的是創建另一個函數,而不是接收陣列它只收到一張卡,這是我仍然試圖找出融合方式的解決方案 –