We are about to switch to a new forum software. Until then we have removed the registration on this forum.
I'm trying to create a variable that is a random value between 0 and the width of the sketch with the following code:
void setup(){
size(640, 480);
}
int x = int(random(0, width));
void draw(){
println(x);
}
However the random value only ever returns 0?!?! Surely it should return a value between 0 and 640?!?!
Please help. I think I'm going crazy. :((
Answers
As you declared x inside setup() it is local, can't be accessed from draw() Either do the println() inside setup() or declare x a global var.
side note to format code in the forum ident lines 4 spaces, or select code and hit 'C' button.
it's not really a scope thing - because it's defined outside of the methods it gets run before setup() and that means that width isn't yet set to its proper value. hence the 0.
ops :) as the code was not formatted and the unusual placing of a global var I thought the declaration was inside setup... Anyway I was wrong, cause, was this the case, it would throw an error instead of printing 0. Thanks for pointing, sorry for misleading answer.
oh, also, tom, because you only set the value once that line in the draw will just print the same value over and over again. _vk's code fixes that by re-setting it in the mousePressed() method. or you can just move line 6 into the draw() loop to get it to change every single frame (and generate tons of output)