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

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

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

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

Q&A

解決済

1回答

2585閲覧

画像をランダムに表示

KI1153

総合スコア1

Processing

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

1グッド

0クリップ

投稿2021/07/30 01:24

編集2021/07/31 04:10

イラスト時計

発生している問題・エラーメッセージ

本来なら13:00:00にプログラムを起動したら13:00:00~13:00:59までは1枚の画像が表示され13:01:00に12枚の画像の中からランダムに1枚が表示されるようにしたいが プログラムを起動したら12枚の画像が常にランダムに表示されるようになっている

実際のコード

PImage a[]; PFont font; void setup(){ size(540,960); noStroke(); a =new PImage[12]; a[0]=loadImage("A1.jpg"); a[1]=loadImage("H1.jpg"); a[2]=loadImage("J1.jpg"); a[3]=loadImage("J2.jpg"); a[4]=loadImage("J3.jpg"); a[5]=loadImage("K1.jpg"); a[6]=loadImage("O1.jpg"); a[7]=loadImage("O2.jpg"); a[8]=loadImage("O3.jpg"); a[9]=loadImage("T1.jpg"); a[10]=loadImage("T2.jpg"); a[11]=loadImage("Y1.jpg"); } int old_s=-1; void draw(){ background(100); int h=hour(); int m=minute(); int s=second(); println(h+";"+m+","+s); if(s<=59){ old_s=s; image(a[ int(random(0,11))],0,0); //image(a[0],0,0); } else{ } fill(0); rect(0,960/60*s,540,960); fill(250); font=createFont("Stencil Std",40); textFont(font); if(h<10){ text("0"+h+":",10,40); } else{ text(h+":",10,40); } if(m<10){ text("0"+m+":",80,40); } else{ text(m+":",80,40); } if(s<10){ text("0"+s,150,40); } else{ text(s,150,40); } }

補足情報(FW/ツールのバージョンなど)

Processing2.2.1

Yahoo知恵袋に投稿をしていて回答して頂けてその回答を試したのですが上手く機能しなかったためこちらでも投稿させて頂きました
リンク内容

TN8001👍を押しています

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

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

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

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

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

thkana

2021/07/31 03:55

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10246330215 https://teratail.com/help#posted-otherservice に則って処置をお願いします。 --- やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。 --- まぁ、知恵袋は解決した質問に追記できないのでどうしよもないですけれど、前半はできますよね。
KI1153

2021/07/31 04:12

先ほど質問内容を更新しました
guest

回答1

0

ベストアンサー

13:00:00にプログラムを起動したら13:00:00~13:00:59までは1枚の画像が表示され13:01:00に12枚の画像の中からランダムに1枚が表示されるようにしたい

ちょっと意味が分からないんですが、1分ごとに画像を変えたいってことでしょうか?(0秒丁度に新たな画像に入れ替える)

秒(old_s)でなくて分(old_m)が変わったかを、見たらいいんじゃないでしょうか。

デフォルトでは1秒に60回drawが呼ばれます(frameRate(60)
同じ秒数でも複数回drawに入るということを、頭に入れておかねばなりません。

Processing

1PImage[] images; 2int old_m = -1; 3int index; 4 5void setup() { 6 size(540, 960); 7 noStroke(); 8 textFont(createFont("Stencil Std", 40)); 9 10 images = new PImage[]{ 11 loadImage("A1.jpg"), 12 loadImage("H1.jpg"), 13 loadImage("J1.jpg"), 14 loadImage("J2.jpg"), 15 loadImage("J3.jpg"), 16 loadImage("K1.jpg"), 17 loadImage("O1.jpg"), 18 loadImage("O2.jpg"), 19 loadImage("O3.jpg"), 20 loadImage("T1.jpg"), 21 loadImage("T2.jpg"), 22 loadImage("Y1.jpg"), 23 }; 24} 25 26void draw() { 27 background(100); 28 29 int h = hour(); 30 int m = minute(); 31 int s = second(); 32 println(h + ";" + m + "," + s); 33 34 if (old_m != m) { 35 old_m = m; 36 index = int(random(0, images.length)); 37 } 38 image(images[index], 0, 0); 39 40 fill(0); 41 rect(0, height / 60 * s, width, height); 42 43 fill(250); 44 String time = nf(h, 2) + ":" + nf(m, 2) + ":" + nf(s, 2); 45 text(time, 10, 40); 46}

Processing3.5.4で書きましたので、もしかしたらどこかエラーが出るかもしれません。
偶然同じ画像(index)が選ばれる可能性があります。


本題とは関係ないですが、数字の0埋めには便利関数が用意されています(名前が覚えにくいのが難点ですが^^;
nf() \ Language (API) \ Processing 2+

投稿2021/07/30 08:40

TN8001

総合スコア9862

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

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

KI1153

2021/08/02 00:55

先ほど試して見たところ無事に理想通りに起動しました ありがとうございました 助かりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問