【问题标题】:Javascript Dice Roll Multiple NumbersJavascript骰子掷出多个数字
【发布时间】:2014-05-16 16:01:41
【问题描述】:

我正在尝试创建一个骰子,在他确定为一个之前指示多个数字。我尝试了一种非常简单的方法,但没有奏效:这是我的代码:

<script>


//preload the six images first
var face0=new Image()
face0.src="http://www.unisg.bplaced.net/dices/d1.gif"
var face1=new Image()
face1.src="http://www.unisg.bplaced.net/dices/d2.gif"
var face2=new Image()
face2.src="http://www.unisg.bplaced.net/dices/d3.gif"
var face3=new Image()
face3.src="http://www.unisg.bplaced.net/dices/d4.gif"
var face4=new Image()
face4.src="http://www.unisg.bplaced.net/dices/d5.gif"
var face5=new Image()
face5.src="http://www.unisg.bplaced.net/dices/d6.gif"

function delay(time) {
  var d1 = new Date();
  var d2 = new Date();
  while (d2.valueOf() < d1.valueOf() + time) {
    d2 = new Date();
  }
}
</script>


<img src="http://www.unisg.bplaced.net/dices/d1.gif" name="mydice">
<form><br><br>
<input type="button" value="Throw dice!" onClick="throwdice(); throwdices();">
</form>

<script type="text/javascript">
function DoAllThese() {
throwdice(); 
throwdices();
}

function throwdice(){
delay(500); 
document.images["mydice"].src=eval("face"+5+".src"); 
delay(500); 
throwdices(); 
}

function throwdices(){
var randomdices=Math.round(Math.random()*4.5); 
delay(1000); 
document.images["mydice"].src=eval("face"+randomdices+".src"); 
}
</script>

我不确定如何对数字进行排序,以使其看起来像骰子在得到解决方案之前会旋转。

【问题讨论】:

  • P.S.不要将变量命名为 face0-face5。这是一个坏主意!使用数组。 var faces = []; faces.push(face0);。这会让你做faces[randomdices].src。没有更多的eval()! :-)
  • 您也不需要所有这些图片,只需创建一个 URL 数组,并在您想要显示时将它们分配给 .src

标签: javascript dice


【解决方案1】:

使用setInterval:

function throwdices() {
    var spins = 10;
    var curSpin = 0;
    var spinInterval = setInterval(function() {
        curSpin++;
        if (curSpin < spins) {
            var randomdices=Math.round(Math.random()*4.5);
            document.images["mydice"].src=eval("face"+randomdices+".src");
        } else {
            clearInterval(spinInterval);
            throwdice();
        }
    }, 500);
}

【讨论】:

  • 有没有办法确定第n卷?比如:只有第五卷是6? (我需要一个科学实验的代码,并希望保持滚动的数量不变。6,参与者通过了这个障碍。
  • 创建一个全局变量counter,并在throwdice()中递增。
  • 您使用eval 只是在拖钓吗?
  • 我只是在复制 OP 的代码。我已经赞成建议更改为数组的评论。我不想在我的答案中进行所有这些更改,以使其特定于所提出的问题。
  • 它工作得很好,只是另一个小问题(不改变初始解决方案:如何在不弹出所有提示的情况下构建警报(例如,警报(“太好了,你通过了这个阶段”))时间?我将它插入到 else 表达式中,但它一直在弹出...?
猜你喜欢
  • 2017-11-06
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 2017-11-15
  • 2012-02-29
  • 2015-06-26
相关资源
最近更新 更多