Javascript 随机骰子

Javascript 随机骰子,javascript,Javascript,当我点击一个按钮滚动所有三个骰子时,是否有可能将顶部的这三个函数合并为一个,但仍然无法在每个骰子上获得相同的随机nr?清除的功能是当我点击一个骰子的时候,底部的功能是当我想同时掷三个骰子的时候!所有这些都是可行的,我的问题是,只有用更少的代码才能做到吗 function rollDice1(){ var randomDice = Math.floor(6*Math.random())+1; dice1.src = "dice/" + randomDice + ".jpg";

当我点击一个按钮滚动所有三个骰子时,是否有可能将顶部的这三个函数合并为一个,但仍然无法在每个骰子上获得相同的随机nr?清除的功能是当我点击一个骰子的时候,底部的功能是当我想同时掷三个骰子的时候!所有这些都是可行的,我的问题是,只有用更少的代码才能做到吗

function rollDice1(){
    var randomDice = Math.floor(6*Math.random())+1;  
    dice1.src = "dice/" + randomDice + ".jpg";
}

function rollDice2(){
    var randomDice = Math.floor(6*Math.random())+1;  
    dice2.src = "dice/" + randomDice + ".jpg";
}

function rollDice3(){
    var randomDice = Math.floor(6*Math.random())+1;
    dice3.src = "dice/" + randomDice + ".jpg";
}

function rollDices() {
    rollDice1();
    rollDice2();
    rollDice3();    
}

在函数中添加一个参数,以便调用时可以传入要设置的模具。这假设
dice1
dice2
dice3
是全局变量

function rollDice(di){
    var randomDice = Math.floor(6*Math.random())+1;  
    di.src = "dice/" + randomDice + ".jpg";
}

function rollDices() {
    rollDice(dice1);
    rollDice(dice2);
    rollDice(dice3);    
}

在函数中添加一个参数,以便调用时可以传入要设置的模具。这假设
dice1
dice2
dice3
是全局变量

function rollDice(di){
    var randomDice = Math.floor(6*Math.random())+1;  
    di.src = "dice/" + randomDice + ".jpg";
}

function rollDices() {
    rollDice(dice1);
    rollDice(dice2);
    rollDice(dice3);    
}

您可以循环,无需三次调用外部函数:

function rollDices() {
    for (var i=1; i<=3; i++) {
       var randomDice = Math.floor(6*Math.random())+1;
       window['dice'+i].src = "dice/" + randomDice + ".jpg";
    } 
}
函数rolldies(){

对于(var i=1;i您可以循环,无需三次调用外部函数:

function rollDices() {
    for (var i=1; i<=3; i++) {
       var randomDice = Math.floor(6*Math.random())+1;
       window['dice'+i].src = "dice/" + randomDice + ".jpg";
    } 
}
函数rolldies(){

对于(var i=1;i我实际上更喜欢使用;只需创建可以滚动的不同骰子对象

function Dice() {

    var self = this;

    this.face;

    this.roll = function () {
        var randomDice = Math.floor(6*Math.random())+1;
        self.face = "dice/" + randomDice + ".jpg";
        return randomDice;
    };

};

var dice1 = new Dice(),
    dice2 = new Dice(),
    dice3 = new Dice();

dice1.roll();
dice2.roll();
dice3.roll();

console.log(dice1.face);
console.log(dice2.face);
console.log(dice3.face);


(请注意,它是不完整的;当骰子没有滚动时,面是未定义的。
。您可能需要采取措施来防止这种状态)。

我实际上更喜欢使用;只需创建可以滚动的不同骰子对象

function Dice() {

    var self = this;

    this.face;

    this.roll = function () {
        var randomDice = Math.floor(6*Math.random())+1;
        self.face = "dice/" + randomDice + ".jpg";
        return randomDice;
    };

};

var dice1 = new Dice(),
    dice2 = new Dice(),
    dice3 = new Dice();

dice1.roll();
dice2.roll();
dice3.roll();

console.log(dice1.face);
console.log(dice2.face);
console.log(dice3.face);

(请注意,它是不完整的;当骰子尚未滚动时,该面是未定义的。
。您可能需要采取措施来防止该状态)。

我的方法是:

function rollDice(times){
    var randomDices = [];
    while (randomDices.length < times)  {
        var rand = Math.floor(6*Math.random())+1;
        if(randomDices.indexOf(rand) > -1 == false)
            randomDices.push(rand);
    }
    return randomDices
}
函数滚动骰子(次){
var随机数=[];
while(随机长度<次){
var rand=Math.floor(6*Math.random())+1;
if(randomDices.indexOf(rand)>-1==false)
随机骰子。推(兰德);
}
返回随机骰子
}
上面的代码返回一个随机骰子数组,长度由您指定。 例如,
rollDice(3)
将返回三个随机骰子。

我的方法是:

function rollDice(times){
    var randomDices = [];
    while (randomDices.length < times)  {
        var rand = Math.floor(6*Math.random())+1;
        if(randomDices.indexOf(rand) > -1 == false)
            randomDices.push(rand);
    }
    return randomDices
}
函数滚动骰子(次){
var随机数=[];
while(随机长度<次){
var rand=Math.floor(6*Math.random())+1;
if(randomDices.indexOf(rand)>-1==false)
随机骰子。推(兰德);
}
返回随机骰子
}
上面的代码返回一个随机骰子数组,长度由您指定。
例如,
rollDice(3)
将返回三个随机骰子。

以下是我对已接受答案的修改:

function rollDice(di) {
    var randomDice = Math.floor(6*Math.random())+1;  
    di.src = "dice/" + randomDice + ".jpg";
}

function rollDices(arr) {
    for (i = 0; i < arr.length; i++) {
        rollDice(arr[i]);
    }    
}
但是,您也可以这样做:

rollDice(dice1);
rollDices([dice1]);
rollDices([dice1, dice2]);
rollDices([dice1, dice2, dice3]);
rollDices([dice1, dice2, dice3, dice4]);
要掷两个骰子,可以执行以下操作:

rollDice(dice1);
rollDices([dice1]);
rollDices([dice1, dice2]);
rollDices([dice1, dice2, dice3]);
rollDices([dice1, dice2, dice3, dice4]);
要掷三个骰子,您可以执行以下操作:

rollDice(dice1);
rollDices([dice1]);
rollDices([dice1, dice2]);
rollDices([dice1, dice2, dice3]);
rollDices([dice1, dice2, dice3, dice4]);
要掷四个骰子,您可以执行以下操作:

rollDice(dice1);
rollDices([dice1]);
rollDices([dice1, dice2]);
rollDices([dice1, dice2, dice3]);
rollDices([dice1, dice2, dice3, dice4]);

等等。

以下是我对公认答案的修改:

function rollDice(di) {
    var randomDice = Math.floor(6*Math.random())+1;  
    di.src = "dice/" + randomDice + ".jpg";
}

function rollDices(arr) {
    for (i = 0; i < arr.length; i++) {
        rollDice(arr[i]);
    }    
}
但是,您也可以这样做:

rollDice(dice1);
rollDices([dice1]);
rollDices([dice1, dice2]);
rollDices([dice1, dice2, dice3]);
rollDices([dice1, dice2, dice3, dice4]);
要掷两个骰子,可以执行以下操作:

rollDice(dice1);
rollDices([dice1]);
rollDices([dice1, dice2]);
rollDices([dice1, dice2, dice3]);
rollDices([dice1, dice2, dice3, dice4]);
要掷三个骰子,您可以执行以下操作:

rollDice(dice1);
rollDices([dice1]);
rollDices([dice1, dice2]);
rollDices([dice1, dice2, dice3]);
rollDices([dice1, dice2, dice3, dice4]);
要掷四个骰子,您可以执行以下操作:

rollDice(dice1);
rollDices([dice1]);
rollDices([dice1, dice2]);
rollDices([dice1, dice2, dice3]);
rollDices([dice1, dice2, dice3, dice4]);

等等。

如何初始化
dice1
dice2
dice3
?并且仍然没有在每个骰子上获得相同的随机nr-您的代码并不保证骰子是唯一的。如何初始化
dice1
dice2
dice3
?并且仍然没有在每个骰子上获得相同的随机nr-您的代码不保证骰子是唯一的。然后它说不能将src的property设置为undefinedAll三个调用现在应该是rollDice(),而不是rollDice1()等,但只有当我点击一个单独的骰子时,为什么会这样?当我按下按钮滚动所有三个骰子时,它工作得很好?是的,我理解,该函数工作得很好,但当我只点击一个骰子时,它说src未定义,它们都是全局变量!无法理解它如何在rollDices函数而不是onc中工作在每张图片上单击=“rollDice(dice1)”?然后它说不能将src的属性设置为UnfinedAll现在应该调用rollDice(),而不是rollDice1()等,但只有当我点击一个单独的骰子时,为什么会这样?当我按下按钮滚动所有三个骰子时,它工作得很好?是的,我理解,该函数工作得很好,但当我只点击一个骰子时,它说src未定义,它们都是全局变量!无法理解它如何在rollDices函数而不是onc中工作在每张图片上单击=“rollDice(dice1)”?应用于简单事物的OOP方法的问题在于它使简单问题变得冗长而不灵活。应用于简单事物的OOP方法的问题在于它使简单问题变得冗长而不灵活。