我有一个基于文本的战争游戏,其中团队的得分为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!")
}
答案 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>