2014-08-28 33 views
1
//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); 

} 

無論如何這應該工作,正確嗎?當我在顯示座標中超過300像素時,這應該給我一個顯示屏中間的矩形,而當我低於300像素時,這個矩形會給我一個橢圓。我是否在錯誤的章節中寫了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'的錯誤信息。

回答

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

+0

選擇哪種方法有什麼好處?另外,我在底部還有一個聲明,不是嗎?對不起,但仍然在這裏理解概念。 – 2014-09-02 18:58:32

+0

另外,我更新了mouseposY變量,並在那些if else語句中更改了操作符類型。不知何故,它現在不想識別數字300。我將發佈並編輯上面的代碼。 – 2014-09-02 19:01:03

+1

運算符是<='不是'= <'。你不需要'<=',因爲你已經在第一個例子中覆蓋了它。你只需要<。 – Jack 2014-09-02 19:36:45