teratail header banner
teratail header banner
質問するログイン新規登録

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

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

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

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

Q&A

解決済

2回答

135閲覧

Processingのfor文を用いた描画でfillが思うように反映されない

mikotone

総合スコア2

Processing

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

0グッド

0クリップ

投稿2025/06/06 01:47

0

0

実現したいこと

画面中央に配置した幅20ずつ減少させた正方形を10個描画したときに、青と緑の交互に塗られた正方形が重なるよう描画したい。

発生している問題・分からないこと

一番下(一番初めに描画される正方形)だけ色が塗られていない。

エラーメッセージ

error

1エラーメッセージなし

該当のソースコード

size(400,400); //画面サイズを300*300に設定 int pos=100; //positionの初期値設定 int side=200; //正方形の一辺の長さを設定 strokeWeight(2); //四角形のアウトラインの太さを2に設定 for(int i=0; i<10; i++){ //10回繰り返しiを1ずつ増やす rect(pos+i*10, pos+i*10, side-i*20, side-i*20); //iが1増える度にpos=-10, side=-20ずつ減る if(i%2 == 0){ //iが偶数の時に以下のプログラムを実行 fill(0,255,0); //四角形の色を青に設定 } else{ //上記がfalse(iが奇数)の場合以下を実行 fill(0,0,255); //四角形の色を緑に設定 } }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

四行目のstrokeWeight(2)の下に fill(0, 0, 255); を描画することで塗りつぶしはできましたが、for文内のコードのみでの塗りつぶしができません。コードのどこがどう間違っているのか分かる方いらっしゃいましたら、ご教授お願いします。

補足

使用しているバージョンはProcessing 4です。

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

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

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

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

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

guest

回答2

0

ベストアンサー

fillコマンドは、描いた図形の色を替えるのではなくこれから描く図形の色を指定するコマンドですから、描く前に変更しなければなりません。

なので

for文内のコードのみでの塗りつぶしができません。
とのことですが、順番を替えればいいでしょう。

text

1pos=-10, side=-20ずつ減る 2//色を指定 3 if(i%2 == 0){ //iが偶数の時に以下のプログラムを実行 4 fill(0,255,0); //四角形の色を青に設定 5 } 6 else{ //上記がfalse(iが奇数)の場合以下を実行 7 fill(0,0,255); //四角形の色を緑に設定 8 } 9 10//図形を描画 11rect(pos+i*10, pos+i*10, side-i*20, side-i*20); //iが1増える度に

投稿2025/06/06 01:57

編集2025/06/06 01:58
TakaiY

総合スコア14431

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

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

mikotone

2025/06/06 04:32

回答ありがとうございます。 試したところ問題が解決しました!とても初歩的なところだったのですね... 詳しく説明していただいてるのでベストアンサーに選ばせていただきました。
guest

0

こんにちは。

Processing は一度も触ったことがないのでドキュメントをチラ見しただけですが、
https://processing.org/reference/fill_.html
Example を見ると、size() -> fill() -> rect() の順で、サイズを決め、色を決め、描画という書き方が必要なように見えます。
fill と rect の記述の順序が逆じゃないでしょうか?

投稿2025/06/06 02:01

tamoto

総合スコア4333

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

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

mikotone

2025/06/06 04:30

回答ありがとうございます!ベストアンサーには別の方を選ばせていただきましたが、tamoto様のコメントも大変参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問