Javascript纸牌游戏-随机选择后替换阵列项目

时间:2019-05-19 15:40:55

标签: javascript arrays

我被要求用javascript创建战争游戏(所有内容都加载在警报框中)。我有一个回合,但是直到我让牌正确加载和得分之前,还没有开始循环或“战争”。

我在为J,Q,K等非编号卡而苦苦挣扎。

这是一门非常入门的课程,我对这门课程很陌生。非常感谢您的帮助。

这是我的代码:

var userName = prompt("what's your name?");

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

var computerScore = 26;
var userScore = 26;

var suits = ["Spades", "Hearts", "Clubs", "Diamonds"];
var cards = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];

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



if (computerCard >= 11 || userCard >= 11)
{
  cards[9] = "Jack";
  cards[10] = "Queen";
  cards[11] = "King";
  cards[12] = "Ace";
}

alert("I drew a " + computerCard + " of " + computerSuit + " and you drew a " + userCard + " of " + userSuit);

  if (computerCard > userCard)
  {
    computerScore++;
    alert("I win. \nThe score is now " + computerScore + " to" + userScore + ".\nDeal Again");
  }
  else
  {
  userScore++;
  alert("You win. \nThe score is now " + computerScore + " to" + userScore + ".\nDeal Again");
}

1 个答案:

答案 0 :(得分:1)

您需要的是一种将卡的显示值(例如“ 7”或“杰克”)与其点值(分别为7或11)相关联的方法。也许最明确的方法是创建类似这样的内容:

const cardValues = {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9,
                    '10': 10, 'Jack': 11, 'Queen': 12, 'King': 13, 'Ace': 14}

但这不是实现此目的的唯一方法,实际上,将其与您已有的代码一起使用可能会更加困难。您只需要比较值以查看更大的值,而实际上并不需要那些显式的值,这表明结构更简单,数组更简单

const cards = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace']

然后,您可以使用computerIndex = Math.floor(Math.random() * cards.length);computerCard = cards[computerIndex],对userIndexuserCard进行同样的操作,然后将比较结果替换为if (computerIndex > userIndex)

这绝不是做这样的事情的唯一方法。但我认为这是对当前代码的最简单的工作更改。