Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 掷骰子直到达到数字_Javascript_Jquery_Html - Fatal编程技术网

Javascript 掷骰子直到达到数字

Javascript 掷骰子直到达到数字,javascript,jquery,html,Javascript,Jquery,Html,我正在学习javascript,我的项目要求我构建一个包含两个骰子图像、一个输入框和一个按钮的网页。输入完成后,可以按下按钮,javascript将告诉您获得该值所需的掷骰次数,骰子图像将显示该值。我的问题是我不能让骰子显示总数,而且我没有得到正确的掷骰数。它总是说花了一卷 //定义骰子对象、属性和方法 变量骰子={ 双方:6,, rollDie:函数(dice元素){ var rolled value=Math.floor(Math.random()*this.sides)+1; var d

我正在学习javascript,我的项目要求我构建一个包含两个骰子图像、一个输入框和一个按钮的网页。输入完成后,可以按下按钮,javascript将告诉您获得该值所需的掷骰次数,骰子图像将显示该值。我的问题是我不能让骰子显示总数,而且我没有得到正确的掷骰数。它总是说花了一卷

//定义骰子对象、属性和方法
变量骰子={
双方:6,,
rollDie:函数(dice元素){
var rolled value=Math.floor(Math.random()*this.sides)+1;
var diceImage=this.getURL(rolled值);
diceElement.attr(“src”,diceImage);
},
rollDice:function(){
var-diceTotal=0;
diceTotal+=这个.rollDie($('#dice1');
diceTotal+=这个.rollDie($('#dice2');
总回报率;
},
rollDoubles:函数(n){
var die1=0;
var-die2=0;
var numRolls=0;
做{
die1=this.rollDie($('#dice1');
die2=this.rollDie($('#dice2');
numRolls++;
}而(!(die1==die2&&die1==n));
返回numRolls;
},
URL\u前缀:“http://dave-reed.com/book3e/Images/",
getURL:函数(n){
//返回n点模具的URL
返回this.URL_前缀+“die”+n+“.gif”;
}
};
//顶级函数
功能辊号(n){
var die1=Math.floor(Math.random()*骰子边)+1;
var die2=Math.floor(Math.random()*骰子边)+1;
var dicetotal=die1+die2;
var numRolls=0;
//掷两个骰子直到你达到n
做{
骰子1=骰子。滚骰子($('#骰子1');
骰子2=骰子。骰子($('#骰子2');
numRolls++;
}而(总=n);
返回numRolls;
//返回卷数
}
函数getRoll(){
var number=parseFloat($(“#num”).val();
var numRolls=卷号(编号);
$(“#时间”).text(“您在”+
numRolls+“rolls”);
}
$(文档).ready(函数(){
美元(“#R”)。点击(“点击”,获取滚动);
//$(“#滚动”)。在(“单击”,Dice.getURL);
});

动态骰子
卷号
输入目标编号:



滚!

试验
问题出在
卷号中

function roll_number(n) {
  var die1 = Math.floor(Math.random() * Dice.sides) + 1;
  var die2 = Math.floor(Math.random() * Dice.sides) + 1;
  var dicetotal = die1 + die2;
  var numRolls = 0;
  do {
      die1 = Dice.rollDie($('#dice1'));
      die2 = Dice.rollDie($('#dice2'));
      dicetotal = die1 + die2;  // and recalculate dicetotal here
      numRolls++;
  } while(dicetotal == n);  // this should be while(dicetotal != n)
  return numRolls;
}
同样在骰子掷骰子中,你应该在最后返回滚骰值。

//定义骰子对象、属性和方法
变量骰子={
双方:6,,
rollDie:函数(dice元素){
var rolled value=Math.floor(Math.random()*this.sides)+1;
var diceImage=this.getURL(rolled值);
diceElement.attr(“src”,diceImage);
return rolled value;//添加了此行;
},
rollDice:function(){
var-diceTotal=0;
diceTotal+=这个.rollDie($('#dice1');
diceTotal+=这个.rollDie($('#dice2');
总回报率;
},
rollDoubles:函数(n){
var die1=0;
var-die2=0;
var numRolls=0;
做{
die1=this.rollDie($('#dice1');
die2=this.rollDie($('#dice2');
numRolls++;
}而(!(die1==die2&&die1==n));
返回numRolls;
},
URL\u前缀:“http://dave-reed.com/book3e/Images/",
getURL:函数(n){
//返回n点模具的URL
返回this.URL_前缀+“die”+n+“.gif”;
}
};
//顶级函数
功能辊号(n){
var die1=Math.floor(Math.random()*骰子边)+1;
var die2=Math.floor(Math.random()*骰子边)+1;
var dicetotal=die1+die2;
var numRolls=0;
//掷两个骰子直到你达到n
做{
骰子1=骰子。滚骰子($('#骰子1');
骰子2=骰子。骰子($('#骰子2');
dicetotal=die1+die2;//添加了此行
numRolls++;
}while(dicetotal!=n);//已修改
返回numRolls;
//返回卷数
}
函数getRoll(){
var number=parseFloat($(“#num”).val();
var numRolls=卷号(编号);
$(“#时间”).text(“您在”+
numRolls+“rolls”);
}
$(文档).ready(函数(){
美元(“#R”)。点击(“点击”,获取滚动);
//$(“#滚动”)。在(“单击”,Dice.getURL);
});

动态骰子
卷号
输入目标编号:



滚!

试验
这里有几个问题。从
roll_number
函数开始,在do while循环中不会重新计算
dicetotal
。其次,当
dicetotal==n
时,将使您脱离循环。实际上,您想要的是相反的:循环,而
dicetotal
与您尝试滚动的
n
不同。最后,
rollDie
函数将更改显示的图像,但不会返回滚动值

rollDie
应该是:

 rollDie: function(diceElement) {
     var rolledValue = Math.floor(Math.random() * this.sides) + 1;
     var diceImage = this.getURL(rolledValue);
     diceElement.attr("src", diceImage);
     return rolledValue;
 }
卷号应该是这样的:

function roll_number(n) {
  var dicetotal; //No need to set a total as the first total will be done in the loop
  var numRolls = 0;
  do {
      dicetotal = Dice.rollDie($('#dice1')) + Dice.rollDie($('#dice2'));
      numRolls++;
  } while(dicetotal != n);  
  return numRolls;
}

这似乎不起作用。我尝试了“!=”,这导致我的页面crash@zgarcia看我的更新,还有一件事遗漏了