我想创建一个程序,在点击“滚动”的矩形后显示骰子的面部,但是当我点击时,没有任何反应。
有人可以解释我做错了吗?
import java.util.Random;
public Random random = new Random();
public color purple = #B507F5;
public int diceChoose = random.nextInt(6);
public int x = mouseX;
public int y = mouseY;
public void setup() {
size(750, 900);
background(255);
}
public void draw() {
strokeWeight(3);
//dice roll button
rect(100, 700, 550, 150);
textSize(100);
fill(purple);
text("Roll", 280, 815);
noFill();
//dice face
rect(100, 100, 550, 550);
roll();
}
public void one() {
fill(0);
ellipse(375, 375, 100, 100);
noFill();
}
public void two() {
fill(0);
ellipse(525, 225, 100, 100);
ellipse(225, 525, 100, 100);
noFill();
}
public void three() {
fill(0);
ellipse(375, 375, 100, 100);
ellipse(525, 225, 100, 100);
ellipse(225, 525, 100, 100);
noFill();
}
public void four() {
fill(0);
ellipse(525, 225, 100, 100);
ellipse(225, 525, 100, 100);
ellipse(525, 525, 100, 100);
ellipse(225, 225, 100, 100);
noFill();
}
public void five() {
fill(0);
ellipse(375, 375, 100, 100);
ellipse(525, 225, 100, 100);
ellipse(225, 525, 100, 100);
ellipse(525, 525, 100, 100);
ellipse(225, 225, 100, 100);
noFill();
}
public void six() {
fill(0);
ellipse(525, 225, 100, 100);
ellipse(225, 525, 100, 100);
ellipse(525, 525, 100, 100);
ellipse(225, 225, 100, 100);
ellipse(525, 375, 100, 100);
ellipse(225, 375, 100, 100);
noFill();
}
public void roll() {
if (mousePressed && x > 100 && x < 650 && y > 700 && y < 850) {
diceChoose = random.nextInt(6);
if (diceChoose == 0) {
one();
}
else if (diceChoose == 1) {
two();
}
else if (diceChoose == 2) {
three();
}
else if (diceChoose == 3) {
four();
}
else if (diceChoose == 4) {
five();
}
else if (diceChoose == 5) {
six();
}
}
}
答案 0 :(得分:0)
您可以在程序的最开始将x
和y
变量设置为mouseX
和mouseY
。但不意味着当mouseX
或mouseY
发生变化时,您的x
和y
变量也会发生变化。考虑一下:
float x = 100;
float y = x;
x = 200;
println(y); //prints 100!
因此,您需要在此if语句中使用x
和y
,而不是引用mouseX
和mouseY
(永不更改):
if (mouseX > 100 && mouseX < 650 && mouseY > 700 && mouseY < 850) {
然后你还有一些其他问题(你实际上没有检测到点击),但这是你第一个问题的答案。
顺便说一句,我想出来的方法是简单地添加println()
语句。我把一个放在你的if语句之前,一个放在它里面:
println("here 1");
if (x > 100 && x < 650 && y > 700 && y < 850) {
println("here 2");
打印出“here 1”,但“here 2”没有,所以我知道要仔细查看if语句中的逻辑。将来,您可以自己尝试这种类型的调试,省去了发帖的麻烦!