//I will make a program that generates a square in the center of
//the screen if my mouse is located on the top half of the display
//and an ellipse if my mouse is located on the bottom half of the
//screen
//Global variables
int mouseposy;
float rect;
float ellipse;
//Setup
void setup() {
size(600,600);
mouseposy = mouseY;
}
//Draw
void draw() {
background(0);
}
if {
(mouseposy > 300);
fill(mouseX,0,mouseY);
rect(300,300,50,50);
} else {
(mouseposy < 300);
fill(mouseX,0,mouseY);
ellipse(300,300,50,50);
}
无论如何,这应该有效,对吗?当我在显示坐标上超过300px时,这应该在显示器的中心给我一个矩形,当我低于300px时,我应该在椭圆上。我是在错误的部分写了if语句还是什么?当我按下运行按钮时,它只是突出显示if语句而没有其他内容。我没有收到任何错误消息,只是突出显示。有谁知道我在这里做错了什么?
///编辑代码///
//Global variables
int mouseposy;
float rect;
float ellipse;
//Setup
void setup() {
size(600,600);
mouseposy = mouseY;
}
//Draw
void draw() {
mouseposy = mouseY;
background(0);
if (mouseposy >= 300){
fill(mouseX,0,mouseY);
rect(300,300,50,50);
} else if(mouseposy =< 300) {
fill(mouseX,0,mouseY);
ellipse(300,300,50,50);
}
}
我猜我仍然已经对代码中的一个或另一个元素进行了屠杀,但是如果有人能够看到这段代码仍然存在问题,我将非常感谢帮助。现在它给了我'意外令牌:300'错误消息。
答案 0 :(得分:2)
我看到三个问题,首先是if语句的语法是
if (condition) statement
在你的例子中,你根本没有任何条件,你有mouseposy > 300
你可能作为一个条件但是用作一个声明,这是一个丢弃它自己的结果的表达式。可能你的意思是
if (mouseposy > 300) {
fill(...);
}
第二个问题是您正在使用变量mouseposy
,但它只是在setup()
方法中设置,该方法在草图开始时调用一次且永远不会更新,您应该直接使用mouseY
变量或在draw
方法中更新。
第三个问题是if / else语句并不涵盖所有案例,因为你有
if (foo < 300) { .. }
else if (foo > 300) { ..}
foo == 300
时会发生什么?您应该使用>=
运算符或将第二个else if
转换为else
。