我正在尝试制作一个非常基本的骰子游戏(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);
答案 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)
一些改进;)
// 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)
这是因为如果你赢了就休息一下,所以它会在第一场胜利后退出循环。