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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

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

Q&A

解決済

1回答

337閲覧

whileで四角形の色を変えたい(java)

shiro3456789

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

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

1グッド

0クリップ

投稿2022/06/03 10:44

幅300,高さ150のウィンドゥに下のような四角形をwhileを使ってかきたいです。イメージ説明
条件は赤のライン(250,0,250,150)未満
幅300,高さ150のウインドウを設定
noLoop()をsetup()内に設定する
発生する乱数の順番を固定するため,randomSeed(1)をsetup()内に設
定する
10~30の間の乱数で横幅を決める四角形を連結していく
while文を利用する
というものなのですが、上限値を超えてしまいます。どなたかどうすればよいか教えていただけると幸いです。

processing

1float x0=0; 2float x=random(10,30); 3void setup(){ 4size(300,150); 5noLoop(); 6randomSeed(1); 7} 8 9 10 11void draw(){ 12stroke(255,0,0); 13line(250,0,250,150); 14while(x+x0<=250){ 15 16fill(0,random(255),random(255)); 17stroke(0); 18; 19rect(x0,50,x,50); 20println(nf(x0,1,1)+" "+nf(x,1,1)); 21x0=x0+x; 22x=x+x; 23} 24}
TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

上限値を超えてしまいます。

提示コードで越えますか?超えるように見えませんが...

発生する乱数の順番を固定するため,randomSeed(1)をsetup()内に設定する

float x=random(10,30);
ここはsetupに実行されます。そのため乱数の固定になっていません。

10~30の間の乱数で横幅を決める四角形を連結していく

float x=random(10,30);これですと初めの1個は確かにランダムですが、その後は2倍(x=x+x;)しているだけでランダムではありません。

つまりx=random(10,30);は、whileにある必要があるのではないですか?

投稿2022/06/03 12:31

TN8001

総合スコア9321

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

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

shiro3456789

2022/06/03 13:47

確かにそうですね!ありがとうございます! その場合はwhileループの中に入れるとなると先にwhileでxを定義しているのでwhileの中に入れることができないとエラーが出るのですがどうすればよいでしょうか? 無知で申し訳ないです
TN8001

2022/06/03 14:22

float x0 = 0; //float x = random(10,30); void draw() { while (x + x0 <= 250) { // x cannot be resolved to a variable float x = random(10, 30); としたということですね?当然使用前に宣言がなければなりません。 float x; void draw() { while (x + x0 <= 250) { x = random(10, 30); こうか、 void draw() { float x = 0; while (x + x0 <= 250) { x = random(10, 30); こうか、 とにかくwhile前に宣言&初期化が来るようにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問