首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS:如何通过html头显示递减值?(以及更多)

JS:如何通过html头显示递减值?(以及更多)
EN

Stack Overflow用户
提问于 2016-10-12 18:38:04
回答 2查看 121关注 0票数 0

基本上,我做了一个简单的javascript/html网页游戏,你猜一个数字,你有三次机会正确猜测。我有一个问题,显示的尝试数,一个球员已经离开(它被困在三个)。应该发生的颜色变化也不会发生。

它也不重置页面的显示后,刷新(它需要5次播放游戏,以使它复位)。

也许我的for循环/if语句是错误的?

这是我的密码。

代码语言:javascript
复制
var guesses = 3;
var random = Math.floor((Math.random() * 10) + 1);
//start the guessing
handleGuess(prompt("Pick a number to win the game!"));

function handleGuess(choice) {
guesses--; //subtract one guess
if (guesses > 0) {
if (choice != random) {
  document.body.style.backgroundColor = "#CC0000";
  var x = "";
  x = x + "You have " + guesses + " chances left" + "<br>";
  document.getElementById("demo").innerHTML = x;
} else {
  var x = "";
  x = x + "You win!" + "<br>";

  document.getElementById("demo").innerHTML = x;

  document.body.style.backgroundColor = "#009000";
  //return false; 
}
} else {
//running out of turns
var x = "";
x = x + "Game Over!" + "<br>";

document.getElementById("demo").innerHTML = x;

document.body.style.backgroundColor = "#FF0000";
//return false;

}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-12 18:49:35

prompt是一个阻塞事件,所以在提示之后才会看到页面更新.试试下面的例子,其中使用setTimeout允许延迟..。

代码语言:javascript
复制
var guesses = 3;
var random = Math.floor((Math.random() * 10) + 1);
//start the guessing
handleGuess(prompt("Pick a number to win the game!"));

function handleGuess(choice) {
  guesses--; //subtract one guess
  if (guesses > 0) {
    if (choice != random) {
      document.body.style.backgroundColor = "#CC0000";
      var x = "";
      x = x + "You have " + guesses + " chances left" + "<br>";
      document.getElementById("demo").innerHTML = x;
      setTimeout(function() {
        handleGuess(prompt("Try again!"));
        },1000);//wait 1 second
    } else {
      var x = "";
      x = x + "You win!" + "<br>";

      document.getElementById("demo").innerHTML = x;

      document.body.style.backgroundColor = "#009000";
      //return false; 
    }
  } else {
    //running out of turns
    var x = "";
    x = x + "Game Over!" + "<br>";

    document.getElementById("demo").innerHTML = x;

    document.body.style.backgroundColor = "#FF0000";
    //return false;

  }
}
代码语言:javascript
复制
<h1 id="demo">You have 3 chances to guess the correct number.</h1>

<br>

票数 1
EN

Stack Overflow用户

发布于 2016-10-12 19:45:19

关注点。--这是一个完全可行的例子,而且对于“阻塞”请求,肯定是一个“过火演示”

我已经删除了新输入的提示调用,并为游戏创建了2个按钮。一个调用Start ,另一个调用“在游戏中尝试调度”

我假设您还在学习,所以这个示例可能会对您有所帮助,因为它展示了根据代码所做的将代码分离为不同元素的优点,并使您更容易“升级”游戏的功能。

我可以替换更多的重复代码,以使它看起来更好,但这将使您不再熟悉它。

代码语言:javascript
复制
/*function ChangeDif(Difficulty) {
    var i = ""
    if (Difficulty == 'easy'){
        i = 10;
    }
    if (Difficulty == 'medium') {
        i = 5;
    }
    if (Difficulty == 'hard') {
        i = 3;
    }
}
*/
var random = 0;
var start_chances = 3;
var start_attemps = 0;
var x = "";

function startgame() {
  document.getElementById("start").hidden = true;
  document.getElementById("number").hidden = false;
  document.getElementById("again").hidden = false;
  document.getElementById("demo").innerHTML = "Pick a number to win the game!";
  random = Math.floor((Math.random() * 10) + 1);
  //Cheat to see the random number, and make sure the game is working fine
  //document.getElementById("cheater").innerHTML= random;
  max_chances = start_chances;
  step();
}

function lostAchance() {
  max_chances--;
  if (max_chances > 0) {
    step();
  } else {
    loser();
  }
}

function loser() {
  //running out of turns
  x = "Game Over!" + "<br>";
  document.getElementById("demo").innerHTML = x;
  document.body.style.backgroundColor = "#FF0000";
  endGame();
}

function step() {
  var choice = parseInt(document.getElementById("number").value);
  if (choice !== random) {
    document.body.style.backgroundColor = "#CC0000";
    x = "You have " + max_chances + " chances left" + "<br>";
    document.getElementById("demo").innerHTML = x;
    document.getElementById("start").hidden = true;
  } else {
    //win
    x = "You win! In " + (start_chances - max_chances) + " attemps <br>";
    document.getElementById("demo").innerHTML = x;
    document.body.style.backgroundColor = "#009000";
    endGame();
  }
}

function endGame(){
  document.getElementById("start").hidden = false;
  document.getElementById("again").hidden = true;
  document.getElementById("number").hidden = true;
}
代码语言:javascript
复制
<!DOCTYPE html>
<html>

<body>
  <input type="radio" name="difficulty" onclick="ChangeDif(this.Difficulty, 'easy')">Easy
  <br>

  <input type="radio" name="difficulty" onclick="ChangeDif(this.Difficulty, 'medium')">Medium
  <br>

  <input type="radio" name="difficulty" onclick="ChangeDif(this.Difficulty, 'hard')">Hard
  <br>
  <h1 id="demo">You have 3 chances to guess the correct number.</h1>
 <input type="number" id="number" hidden />
  <button type="submit" id="start" onclick="startgame()">Let's PLAY</button>
<button type="submit" id="again" hidden onclick="lostAchance()">Try Again</button>
  <p id ="cheater"></p>
</body>

</html>

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

https://stackoverflow.com/questions/40006014

复制
相关文章

相似问题

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