質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

1回答

882閲覧

processingで条件分岐を利用した色の変更ができません。

julykati

総合スコア6

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2018/06/08 05:49

編集2018/06/08 05:59

前提・実現したいこと

processingで黒い円1個と赤い円20個を動かし、
黒い円と赤い円が重なっているとき、背景の色を変更する
というものを作っていますが、背景の色が変更されません。

該当のソースコード

int n = 20; int p = 400; int q = 250; float[] x,y,vx,vy; boolean caution = false; void setup(){ size(800,500); x = new float[n]; y = new float[n]; vx = new float[n]; vy = new float[n]; for(int i = 0; i < n; i++){ float angle = random(360); x[i] = random(10,width-10); y[i] = random(10,height-10); vx[i] = 2*cos(degrees(angle)); vy[i] = 2*sin(degrees(angle)); } } void draw(){ hitCheck_circle(); player(); drawCircle(); } void player(){ fill(0); ellipse(p,q,20,20); if(p < mouseX){ p += 5; } if(p > mouseX){ p -= 5; } if(q < mouseY){ q += 5; } if(q > mouseY){ q -= 5; } } void drawCircle(){ fill(255,0,0); for(int i = 0; i < n; i++){ ellipse(x[i],y[i],20,20); x[i] += vx[i]; y[i] += vy[i]; if(x[i] < 10 || x[i] > width-10){ vx[i] = -vx[i]; } if(y[i] < 10 || y[i] > height-10){ vy[i] = -vy[i]; } if((dist(p,q,x[i],y[i])) <= 20){ caution = true; } else { caution = false; } } } void hitCheck_circle(){ if(caution){ background(255,255,0); } else { background(255); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

どれかの丸に当たって一度はcaution = trueになってても、forループで全ての丸に対して判定されてるので、最後の丸に当たってない限り最後にcaution = falseになってしまってるのだと思います。
なので、forループの前で一度だけcaution = falseをして、

if (dist <= 20) { caution = true }

という感じでelsefalseを代入しないようにしたらうまくいくと思います!

投稿2018/06/10 07:21

kthatoto

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問