2016-09-20 4 views
0

処理中の配列の内容と変数の値を比較するにはどうすればよいですか?基本的に私は色の値の配列を持っています。私は現在の色である変数を持っています。どのように言いますか:「このキーを押すと:この色の値の配列を通り、現在の色と同じではないランダムな値を選択し、その値を新しい現在の色に割り当てますか?現在の値と等しくない配列からランダムな値を選択します

color[] colorArray = {#000000,#FFC000,#E0FF00,#7EFF00}; 
color currentColor; 
color randomColor; 

void setup(){ 
    size(640,480); 
    smooth(); 
    noStroke(); 
    currentColor = colorArray[0]; 
} 

void draw(){ 
    background(currentColor); 

} 

void keyReleased(){ 
    if(key == 's'){ 
    println("currentColor: "+currentColor); 
    for(int i =0; i < colorArray.length; i++){ 
     //println(colorArray[i]); 
     if(currentColor != colorArray[i]){ 
     println(colorArray[i]); 
     // what do i do here? Append to another array and loop through again?  
     } 
    } 
    } 
} 

答えて

0

おそらく、インデックスの色と異なるだけインデックスに変更します。処理に非常にうまく機能し、次のコードを試してみてください。

color[] colorArray = {#000000,#FFC000,#E0FF00,#7EFF00}; 
int currentColor; 

void setup(){ 
    size(640,480); 
    smooth(); 
    noStroke(); 
    currentColor = 0; 
} 
void draw(){ 
    background(colorArray[currentColor]); 
} 
void keyReleased(){ 
    if(key == 's'){ 
    println("currentColor: "+currentColor); 
    int newColor = currentColor; 
    while (newColor == currentColor) 
     newColor=(int) random(colorArray.length); 
    currentColor = newColor; 
    } 
} 
+0

インデックス:

はここで少し例です!私は配列内の値を比較するのに掛かってしまったので、インデックスを比較するだけの解決策ではありませんでした。それを見てくれてありがとう、ありがとう。 –

+0

追加Q:2つの背景色の間で色あせしたい場合は、どこを見て/どの方向に向けるべきかについての提案がありますか? –

+0

おそらく、このディスカッションは以下を助けるかもしれません:[背景を退廃させる](https://processing.org/discourse/beta/num_1262739926.html) –

0

私はジェームズ・ダンの答えが好きなのが、ちょうど追加する:これは正確なものの一種である行う-ながらループがために設計されています。

do-whileは、あるコードを少なくとも1回実行し、条件が真である間にそのコードの実行を続けます。あなたの場合、あなたはランダムな色を選ぶことができ、新しい色があなたの古い色と同じである間にその行動を繰り返し続けます。

color[] colors = {#ff0000, #00ff00, #0000ff}; 
color currentColor = colors[0]; 

void draw() { 
    background(currentColor); 
} 

void mousePressed() { 

    color newColor; 

    do { 
    newColor = colors[int(random(colors.length))]; 
    } while (newColor == currentColor); 

    currentColor = newColor; 
} 
関連する問題