首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript虫,战舰游戏

JavaScript虫,战舰游戏
EN

Stack Overflow用户
提问于 2014-12-28 16:30:20
回答 4查看 326关注 0票数 0

我最近开始学习JS,我做了一个非常简单的游戏。这是一个简单的战舰游戏,没有动画。下面是代码:

代码语言:javascript
复制
<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="CSS/Game.css" type="text/css" charset="utf-8">

</head>

<body>

    <marquee id="output"></marquee>

    <script>
        var loc1,loc2,loc3;
        var guess;
        var hits = 0;
        var guesses = 0;
        var isSunk = false;
        var locRandom = Math.floor(Math.random() * 9);

        loc1 = locRandom;
        loc2 = loc1 + 1;
        loc3 = loc2 + 1;



    while(isSunk == false){

            guess = prompt("Enter a number from 1-10");

        if(guess == null){
                alert("Bye");
            promt.close;
        }

       else if(guess < 0 || guess > 10 || guess == "" || guess == " "){


                alert("Write a valid number");
            }
            else
            {
            guesses = guesses + 1;  

            if(guess == loc1 || guess == loc2 || guess == loc3) {
                alert("HIT!");    
                hits = hits + 1;

                    if(hits == 3){
                        isSunk = true;
                        alert("You sank my battleship!");
                    }
                } else {
                    alert("MISS");
                }
            }

        }
    var stats = "You took " + guesses  + " guesses to sink the battleship, " + "which means that  your accuracy is " + (3/guesses) + " hit(s) per guess";
        alert(stats);
        alert("Thanks for playing!");
        document.getElementById("output").innerHTML = "Refresh to play again!";
        document.write("<br><br>This game was created by Swegre Designs");
    </script>





</body>

但问题是,例如,当我在数字1上被“击中”时,我可以在飞船上输入3次,战舰被击沉,但这不是应该发生的事情,我希望你能理解这个错误,有人能帮我吗?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-28 16:38:42

您没有跟踪用户先前的任何猜测。

您可以使用数组跟踪猜测的位置。例如:

代码语言:javascript
复制
var guessedPositions = [];

然后,当您收到来自用户的输入时,将他们猜测的位置推入数组中:

代码语言:javascript
复制
guessedPositions.push(guess);

然后,您必须将guessedPositions与用户guess进行比较,您可以为此创建一个函数:

代码语言:javascript
复制
function alreadyGuessed(userGuess) {
   for(var i=0; i<guessedPositions.length;i++) {
      if (guessedPositions[i] == userGuess) {
          return true;
      }
   }
   return false;
}

您可以通过:alreadyGuessed(guess);调用它

如果该条目在数组中,则返回true或false。

编辑-来自您的评论

代码语言:javascript
复制
while(isSunk == false){

 guess = prompt("Enter a number from 1-10");

  if (guess == null){
     alert("Bye");
     promt.close;
  }

  else if(guess < 0 || guess > 10 || guess == "" || guess == " "){
      alert("Write a valid number");
  }
  else if (alreadyGuessed(guess)) { // This is the line you are looking for.
     alert("You have already guessed " + guess + ", please enter a different location");
  }
  else
  {
票数 2
EN

Stack Overflow用户

发布于 2014-12-28 16:42:07

不是什么虫子-这是怎么回事

代码语言:javascript
复制
 if(guess == loc1 || guess == loc2 || guess == loc3)

没有考虑到他们是否已经猜到了地点。我会跟踪他们在数组中已经猜到的位置,然后使用它来检查是否是一个新的猜测。或者,您可以将所有的"hittable“位置放在一个数组中,然后当他们猜测正确的位置时,将其从数组中删除。

票数 1
EN

Stack Overflow用户

发布于 2014-12-28 16:35:29

记住他们击中的三个位置中的哪一个,不要让他们在随后的一次尝试到那个位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27678349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档