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