处理布尔逻辑,没有注意到错误,但没有运行

时间:2014-08-28 17:48:13

标签: boolean mouseevent processing

//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'错误消息。

1 个答案:

答案 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