Javascript中非常基本的骰子游戏 - 试图记录'胜利'变量

时间:2015-02-09 07:20:52

标签: javascript

我正在尝试制作一个非常基本的骰子游戏(Javascript新手)。在页面加载时,“骰子”被“滚动”三次并显示结果,并显示一条消息,说明您是否设法滚动了6。我正试图传达一个关于赢得了多少游戏的永久性消息 - 问题是,如果你看下面我的代码,那么每次获胜时,我用于这个'胜利'的变量会增加,但是它实际上只显示两个值:如果用户刚丢失则为0,如果是胜利则为1。无论骰子滚动多少次,它都不会达到更高的数字。想知道是否有人有解决方案/解释?

代码:

console.log("Dice game. You have 3 tries to roll a 6 - go");
var rolls = 0;
var wins = 0;

function rollDice()  {
    var dice = Math.random();
    if (dice <= .17) {
        dice = 1;   
    }
    else if (dice <= .33) {
        dice = 2;   
    }
    else if (dice <= .50) {
        dice = 3;   
    }
    else if (dice <= .67) {
        dice = 4;   
    }
    else if (dice <= .84) {
        dice = 5;   
    }
    else if (dice <= 1) {
        dice = 6;   
    }
    return dice;
}

function diceGame() {
    do {
        var dice = rollDice();
        console.log(dice);
        rolls++;
        if (dice === 6) {
            console.log("You won!");
            wins++;
            if (rolls === 1) {
                console.log("It took " + rolls + " try");
            }
            else {
                console.log("It took " + rolls + " tries");
            }
            break;
        }
    }
    while (rolls <= 2);
    if (dice !== 6) {
        console.log("You lost");
    }
}

diceGame();
console.log("Times won: " + wins);

5 个答案:

答案 0 :(得分:0)

值1永远不会被命中,因为:

  

Math.random()函数返回一个浮点伪随机函数   数字在[0,1]范围内,即从0(包括)到最大但不是   包括1(独家),然后你可以扩展到你想要的   范围。实现选择随机的初始种子   数字生成算法;它不能被用户选择或重置。

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random

答案 1 :(得分:0)

你是如何运行代码的?每次运行时,它都会将wins变量重置为0.您需要使用按钮调用该函数,或者不需要刷新代码块以便第二次运行。

答案 2 :(得分:0)

一些改进;)

  1. 调用continue而不是break MDN continue
  2. 更改rollDice函数Random number from range
  3. 创建命名空间的匿名函数
  4.     // namespace for our variables
        (function(){

    console.log("Dice game. You have 3 tries to roll a 6 - go"); var rolls = 0; var wins = 0; function rollDice() { // simple random from range ( https://stackoverflow.com/a/1527820/2746472 ) return Math.floor(Math.random()*6)+1; } function diceGame() { do { var dice = rollDice(); console.log(dice); rolls++; if (dice === 6) { console.log("You won!"); wins++; if (rolls === 1) { console.log("It took " + rolls + " try"); } else { console.log("It took " + rolls + " tries"); } continue; //instead of break! } } while (rolls <= 2); if (dice !== 6) { console.log("You lost"); } } diceGame(); console.log("Times won: " + wins); })();

答案 3 :(得分:-1)

您的rollDice功能可以简化为1行。

var dice = Math.floor(Math.random() * 6) + 1;

答案 4 :(得分:-1)

这是因为如果你赢了就休息一下,所以它会在第一场胜利后退出循环。