Javascript骰子掷多个数字
我试图创建一个掷骰子,一个在他定为一之前指示多个数字的骰子。我尝试了一种非常简单的方法,但没有成功:以下是我的代码:Javascript骰子掷多个数字,javascript,dice,Javascript,Dice,我试图创建一个掷骰子,一个在他定为一之前指示多个数字的骰子。我尝试了一种非常简单的方法,但没有成功:以下是我的代码: <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
<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>
//先预加载六个图像
var face0=新图像()
face0.src=”http://www.unisg.bplaced.net/dices/d1.gif"
var face1=新图像()
face1.src=”http://www.unisg.bplaced.net/dices/d2.gif"
var face2=新图像()
面2.src=”http://www.unisg.bplaced.net/dices/d3.gif"
var face3=新图像()
面3.src=”http://www.unisg.bplaced.net/dices/d4.gif"
var face4=新图像()
face4.src=”http://www.unisg.bplaced.net/dices/d5.gif"
var face5=新图像()
面5.src=”http://www.unisg.bplaced.net/dices/d6.gif"
功能延迟(时间){
var d1=新日期();
var d2=新日期();
而(d2.valueOf()
函数doAllThis(){
杂碎();
throwdices();
}
函数throwdice(){
延迟(500);
document.images[“mydice”].src=eval(“face”+5+“.src”);
延迟(500);
throwdices();
}
函数throwdices(){
var randomdices=Math.round(Math.random()*4.5);
延迟(1000);
document.images[“mydice”].src=eval(“face”+randomdices+“.src”);
}
我不知道如何对数字进行排序,使其看起来像是骰子在进入解决方案之前旋转一样。使用
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);
}
函数throwdices(){
var自旋=10;
var-curSpin=0;
var spinInterval=setInterval(函数(){
curSpin++;
如果(光标<旋转){
var randomdices=Math.round(Math.random()*4.5);
document.images[“mydice”].src=eval(“face”+randomdices+“.src”);
}否则{
净间隔(自旋间隔);
杂碎();
}
}, 500);
}
P.S.不要命名变量face0
-face5
。这是个坏主意!使用数组<代码>变量面=[];面。推(面0)代码>。这将允许您执行面[随机骰子].src
。不再使用eval()
!:-)您也不需要所有这些图像,只要创建一个URL数组,并在需要显示时将其分配给.src
。是否有方法确定第n个滚动?比如:只有第五卷是6?(我需要一个科学实验的代码,并希望保持转鼓的数量不变。使用6,参与者通过这一关。创建一个全局计数器变量,并在throwdice()中递增它)
。你在那里使用的eval
是不是只是在玩游戏?我只是在复制OP的代码。我已经对建议更改为数组的评论投了赞成票。我不想在我的答案中做所有这些更改,以使其针对所问的问题。效果很好,只是另一个小问题(在不更改初始解决方案的情况下:如何构建警报(例如,警报(“太好了,您通过了此阶段”))而不一直弹出?我将其插入else表达式中,但它一直弹出?