2014-08-28 3 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 и ничего больше. Я не получаю сообщение об ошибке, просто подсветка. Кто-нибудь знает, что я здесь делаю неправильно?Обработка логической логики, ошибки не обнаружено, но не будет работать

/// EDITED КОД ///

//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 (condition) statement 

В вас, например, вы не имеете каких-либо условий вообще, у вас есть mouseposy > 300, которые вы, вероятно, предназначены как условие, но используется как оператор, который является выражением, которое отбрасывает свой собственный результат. Возможно, вы имели в виду что-то вроде

if (mouseposy > 300) { 
    fill(...); 
} 

Второй вопрос заключается в том, что вы используете переменную mouseposy, но он устанавливается только в setup() метод, который вызывается один раз, когда эскиз начинается и он никогда не был обновлен, должен непосредственно использовать переменную mouseY или обновить ее в вашем методе draw.

Третий вопрос заключается в том, что если/другое заявление не распространяется на все случаи, так как у вас есть

if (foo < 300) { .. } 
else if (foo > 300) { ..} 

Что происходит, когда foo == 300? Вы должны использовать оператор >= или повернуть второй else if в else.

+0

Каковы преимущества выбора любого подхода? Кроме того, у меня просто есть другое высказывание там внизу, не так ли? Извините за дерп, но все еще хватаю за понятия здесь. –

+0

Кроме того, я обновил переменную mouseposY и изменил типы операторов на те инструкции if else. Каким-то образом он не хочет распознавать число 300 сейчас. Я отправлю и отредактирую код выше. –

+1

Оператор '<=' не '= <'. Вам не нужно иметь '<=', хотя, поскольку вы уже закрываете его в первом случае. Вам просто нужно <. – Jack

Смежные вопросы