停止得分为负且超过52

时间:2019-05-22 13:09:21

标签: javascript counter

我有一个基于文本的战争游戏,其中团队的得分为26(userScore和computerScore)。当玩家获胜时,它上升;而当玩家输掉时,它下降。

问题是,分数变为负数并且超过52(如果战争时有51张牌),这将是所有牌加一些(不能超过52张牌)。

如何限制userScore和computerScore变为负数或超过52?

var suits = ["Spades", "Hearts", "Clubs", "Diamonds"];
var cards = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"];

var attempts = 1;
var war = false;

var computerScore = 26;
var userScore = 26;


while (computerScore < 52 && userScore < 52)
{

  var computerIndex = Math.floor(Math.random() * cards.length);
  var userIndex = Math.floor(Math.random() * cards.length);

  var computerCard = cards[computerIndex];
  var userCard = cards[userIndex];
  var computerSuit = suits[Math.floor(Math.random()*suits.length)];
  var userSuit = suits[Math.floor(Math.random()*suits.length)];

  alert("I drew a " + computerCard + " of " + computerSuit +"\nYou drew a " + userCard + " of " + userSuit);

  if (computerIndex > userIndex && war == false)
  {
    computerScore++;
    userScore--;
    alert("I win. \n\nI have " + computerScore + " cards and you have " + userScore + " cards.");
  }

  else if (computerIndex < userIndex && war == false)
  {
    computerScore--;
    userScore++;
    alert("You win. \n\nI have " + computerScore + " cards and you have " + userScore + " cards.");
  }

  else if (computerIndex == userIndex && war == false)
  {
    alert("TIE! TIME FOR WAR! \n\nI have " + computerScore + " cards and you have " + userScore + " cards")
    war = true;

    var computerIndex = Math.floor(Math.random() * cards.length);
    var userIndex = Math.floor(Math.random() * cards.length);

    var computerCard = cards[computerIndex];
    var userCard = cards[userIndex];
    var computerSuit = suits[Math.floor(Math.random()*suits.length)];
    var userSuit = suits[Math.floor(Math.random()*suits.length)];

    alert("I drew a " + computerCard + " of " + computerSuit +"\nYou drew a " + userCard + " of " + userSuit);

      if (computerIndex > userIndex && war == true)
          { 
            computerScore = computerScore + (attempts * 3);
            userScore = userScore - (attempts * 3);
            alert("I win. \n\nI have " + computerScore + " cards and you have " + userScore + " cards.");
            war = false;
            attempts = 1;
          }

          else if (computerIndex < userIndex && war == true)
          {
            userScore = userScore + (attempts * 3);
            computerScore = computerScore - (attempts * 3);
            alert("You win. \n\nI have " + computerScore + " cards and you have " + userScore + " cards.");
            war = false;
            attempts = 1;
          }

          else 
          {
            alert("TIE! TIME FOR WAR (AGAIN)! \n\nI have " + computerScore + " cards and you have " + userScore + " cards")
            attempts++;

            var computerIndex = Math.floor(Math.random() * cards.length);
            var userIndex = Math.floor(Math.random() * cards.length);

            var computerCard = cards[computerIndex];
            var userCard = cards[userIndex];
            var computerSuit = suits[Math.floor(Math.random()*suits.length)];
            var userSuit = suits[Math.floor(Math.random()*suits.length)];

            alert("I drew a " + computerCard + " of " + computerSuit +"\nYou drew a " + userCard + " of " + userSuit);

            if (computerIndex == userIndex)
            {
              war = true;
            }

            else
            {
              war = false;
            }
          }
  }
}  

              if (computerScore >= 52)
                {
                  alert("I WIN!  GOOD GAME!");
                }
                  else
                {
                  alert("YOU WIN!  GOOD GAME!")
                }

1 个答案:

答案 0 :(得分:0)

您正在使用(cards.length)计算computerIndex和userIndex,而应该使用(cards.length)-1,因为数组始终从索引0开始,这就是总卡数最终超过52的原因。西装也一样。 编辑:为避免将括号放错位置,只需创建一个变量并按如下所示使用它即可:

<script>

alert("Hi. Let's Play War!");

var computerScore = 48;
var userScore = 4;

var suits = ["Spades", "Hearts", "Clubs", "Diamonds"];
var cards = ["2", "3", "4"];

var attempts = 1;
var war = false;

function mathClampC(min,mid,max)
{
  var min = 0;
  var max = 52;
  var mid = computerScore;
  return Math.min(Math.max(min,mid),max);
}

function mathClampU(min,mid,max)
{

  var min = 0;
  var max = 52;
  var mid = userScore;
  return Math.min(Math.max(min,mid),max);
}

while (computerScore < 52 && userScore < 52)
{
  var computerIndex = Math.floor(Math.random() * cards.length);
  var userIndex = Math.floor(Math.random() * cards.length);

  var computerCard = cards[computerIndex];
  var userCard = cards[userIndex];
  var computerSuit = suits[Math.floor(Math.random()*suits.length)];
  var userSuit = suits[Math.floor(Math.random()*suits.length)];

  alert("I drew a " + computerCard + " of " + computerSuit +"\nYou drew a " + userCard + " of " + userSuit);

  if (computerIndex > userIndex && war == false)
  {
    computerScore++;
    userScore--;
    alert("I win. \n\nI have " + mathClampC() + " cards and you have " + mathClampU() + " cards.");
  }

  else if (computerIndex < userIndex && war == false)
  {
    computerScore--;
    userScore++;
    alert("You win. \n\nI have " + mathClampC() + " cards and you have " + mathClampU() + " cards.");
  }

  else if (computerIndex == userIndex && war == false)
  {
    alert("TIE! TIME FOR WAR! \n\nI have " + mathClampC() + " cards and you have " + mathClampU() + " cards")
    war = true;

    var computerIndex = Math.floor(Math.random() * cards.length);
    var userIndex = Math.floor(Math.random() * cards.length);

    var computerCard = cards[computerIndex];
    var userCard = cards[userIndex];
    var computerSuit = suits[Math.floor(Math.random()*suits.length)];
    var userSuit = suits[Math.floor(Math.random()*suits.length)];

    alert("I drew a " + computerCard + " of " + computerSuit +"\nYou drew a " + userCard + " of " + userSuit);

      if (computerIndex > userIndex && war == true)
          { 
            computerScore = computerScore + (attempts * 3);
            userScore = userScore - (attempts * 3);
            alert("I win. \n\nI have " + mathClampC() + " cards and you have " + mathClampU() + " cards.");
            war = false;
          }

          else if (computerIndex < userIndex && war == true)
          {
            userScore = userScore + (attempts * 3);
            computerScore = computerScore - (attempts * 3);
            alert("You win. \n\nI have " + mathClampC() + " cards and you have " + mathClampU() + " cards.");
            war = false;
          }

          else if (computerIndex == userIndex || war == true)
          {
            alert("TIE! TIME FOR WAR (AGAIN)! \n\nI have " + mathClampC() + " cards and you have " + mathClampU() + " cards")
            attempts++;

            if (computerIndex == userIndex) 
            {
              war = true;
            }

            else 
            {
              war = false;
            }
          }
  }
}  

              if (computerScore >= 52)
                {
                  alert("I WIN!  GOOD GAME!");
                }
                  else
                {
                  alert("YOU WIN!  GOOD GAME!")
                }

</script>