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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

再帰

情報工学における再帰とは、プログラムのあるメソッドの処理上で自身のメソッドが再び呼び出されている処理の事をいいます。

Processing

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

Q&A

3回答

8085閲覧

Processingで、星を10個表示させたいです…

退会済みユーザー

退会済みユーザー

総合スコア0

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

再帰

情報工学における再帰とは、プログラムのあるメソッドの処理上で自身のメソッドが再び呼び出されている処理の事をいいます。

Processing

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

0グッド

0クリップ

投稿2015/12/23 20:33

Processingの質問です。
再帰を使って、以下のような方法で画面上に綺麗なデザインした星を10個、すべて違う色合いでランダムに表示させようと思っています。
しかし、どうしても1つしか生成されません。
どうしたらよいでしょうか?
課題の締め切りは、なんと今日の一限です!
お助けください・・・><

void setup(){
size(800, 800);
background(255);
drawStar(30,10); //chushin_kara_toge_made_no_kyori
}

void drawStar(int Ro,int kosuu){
float vNf = random(5,40); //choten_no_kazu_ha_5-40_made_random
int vN = int(vNf)*2; //choten_no_kazu
int R; //chushin_kara_choten_made_no_kyori
int Ri = Ro/2; //chushin_kara_tani_made_no_kyori

for (int abc=0; abc<10; abc+=1){
color rC = color(random(100,255),random(100,255),random(100,255));
noStroke();
fill(rC,100);
pushMatrix();
translate(width/2+random(-100,100), height/2+random(-100,100));
rotate(radians(-90));

for (int ii=0; ii<9; ii+=1){ rotate(PI/9); scale(1.1); fill(rC,100-ii*10); beginShape(); for (int i=0; i<vN; i++){ if (i%2 == 0) { R = Ro; } else { R = Ri; } vertex(R*cos(radians(360*i/vN)), R*sin(radians(360*i/vN))); } endShape(CLOSE); }

}
popMatrix();
}

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

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

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

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

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

baribarian

2015/12/23 21:03

自己解決したので、削除をお願いいたします・・・すみません><
guest

回答3

0

すでに動作はするようになっているようですが、作成方針を述べます。

作成方針:

  1. 指定した位置に指定した色で星を描くものを 1 つのメソッドとして定義します。
  2. それが動作するようになったら、メイン側で10 回くりかえすループを書きます。

そのループのなかで位置と色を変化させながら星を1つ描くメソッドを呼びます。

おそらく課題の出題意図としても、そのような構造のコードを求めていると思います。

投稿2015/12/23 22:44

katoy

総合スコア22324

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

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

0

void setup(){
size(800, 800);
background(255);
for (int kazu=0; kazu<20; kazu+=1){
drawStar(30,10);//chushin_kara_toge_made_no_kyori
}
}

void drawStar(int Ro,int kosuu){
float vNf = random(5,40); //choten_no_kazu_ha_5-40_made_random
int vN = int(vNf)*2; //choten_no_kazu
int R; //chushin_kara_choten_made_no_kyori
int Ri = Ro/2; //chushin_kara_tani_made_no_kyori
float Rosf = Ro + random(-Ro/5,Ro/5);
int Ros = int(Rosf);
color rC = color(random(100,255),random(100,255),random(100,255));
noStroke();
fill(rC,100);
pushMatrix();
translate(width/2+random(-width/2,width/2), height/2+random(-height/2,height/2));
rotate(radians(-90));

for (int ii=0; ii<9; ii+=1){ rotate(PI/9); scale(1.1); fill(rC,100-ii*10); beginShape(); for (int i=0; i<vN; i++){ if (i%2 == 0) { R = Ros; } else { R = Ri; } vertex(R*cos(radians(360*i/vN)), R*sin(radians(360*i/vN))); } endShape(CLOSE); }

popMatrix();
}

あ!できました!

投稿2015/12/23 20:51

編集2015/12/23 20:52
baribarian

総合スコア12

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

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

0

すみません、26行目、訂正です。
translate(width/2+random(-100,100), height/2+random(-100,100));
から
translate(width/2+random(-width/2,width/2), height/2+random(-height/2,height/2));
にしました。
(個数は関係ありませんが・・・)

投稿2015/12/23 20:49

baribarian

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問