无法让javascript程序工作

时间:2017-09-16 05:32:02

标签: javascript

我正在学习javascript而且我正在开发一个小骰子游戏。在游戏中你点击鼠标,骰子“滚动”,你得到了骰子的新面。我只是改变模具的表面以匹配滚动的数字。我似乎无法让它发挥作用。当我点击鼠标时,会输入一次随机数,但它始终是其他的。它等于6或更高,我不能让它再次滚动。当您单击鼠标时,它应该创建一个介于0 5之间的随机数,然后对应的if语句应该显示骰子的那一侧。我已经绞尽脑汁待了一个多小时,似乎无法理解为什么它不起作用。有人可以看看我的代码并告诉我我做错了什么。请!

var dice = 0;

function setup() {
  createCanvas(600, 400)
}

function draw() {
  background(0);
  if (dice == 0) {
    rectMode(CENTER);
    fill(255);
    rect(300, 200, 50, 50);
    rectMode(CENTER);
    fill(0);
    ellipse(300, 200, 5, 5)
  } else if (dice == 1) {
    rectMode(CENTER);
    fill(255);
    rect(300, 200, 50, 50);
    fill(150);
    ellipse(290, 190, 5, 5);
    fill(150);
    ellipse(310, 210, 5, 5);
  } else if (dice == 2) {
    rectMode(CENTER);
    fill(255);
    rect(300, 200, 50, 50);
    fill(150);
    ellipse(290, 190, 5, 5);
    fill(150);
    ellipse(310, 210, 5, 5);
    fill(150)
    ellipse(290, 210, 5, 5)
  } else if (dice == 3) {
    rectMode(CENTER);
    fill(255);
    rect(300, 200, 50, 50);
    fill(150);
    ellipse(290, 190, 5, 5);
    fill(150);
    ellipse(310, 210, 5, 5);
    fill(150)
    ellipse(290, 210, 5, 5);
    fill(150);
    ellipse(310, 190, 5, 5)
  } else if (dice == 4) {
    rectMode(CENTER);
    fill(255);
    rect(300, 200, 50, 50);
    fill(150);
    ellipse(290, 190, 5, 5);
    fill(150);
    ellipse(310, 210, 5, 5);
    fill(150)
    ellipse(290, 210, 5, 5);
    fill(150);
    ellipse(310, 190, 5, 5);
    fill(150);
    ellipse(300, 200, 5, 5)
  } else {
    rectMode(CENTER);
    fill(255);
    rect(300, 200, 50, 50);
    fill(150);
    ellipse(290, 190, 5, 5);
    fill(150);
    ellipse(310, 210, 5, 5);
    fill(150)
    ellipse(290, 210, 5, 5);
    fill(150);
    ellipse(310, 190, 5, 5);
    fill(150);
    ellipse(300, 210, 5, 5);
    fill(150);
    ellipse(300, 190, 5, 5)
  }
}

function mousePressed() {
  dice = random(5);
}

1 个答案:

答案 0 :(得分:1)

使用此代替dice = random(5)

dice = Math.floor(Math.random() * 6);

Math.random()返回0到1之间的浮点数 我们将它加倍6然后我们有一个介于0到6之间的数字 但它像5.22554545一样漂浮 我们使用Math.floor将其四舍五入到楼层编号,因此它是0到5之间的整数(和5本身)。 ===> 5.22324234 = 5