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

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

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

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

Q&A

解決済

1回答

371閲覧

ランダム関数の使い方

sho888

総合スコア14

Processing

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

0グッド

0クリップ

投稿2022/06/19 01:05

float x, y, w, h;
int imgX;

PImage img[];
img[]=random(2);
void setup() {
size(800, 800);
/* パネルの大きさ*/
x = 20;
y = 300;
w = width - 40;
h = 400;

img=new PImage[10];
img[0]=loadImage("ika.png");
img[1]=loadImage("sake.png");

}

void draw() {
background(127);
showPanel(x, y, w, h); // パネルの表示
Display();
mato(imgX++);
}

画像をランダムに表示させるようにしたいのですが、いまいち使い方がよく分かりません。
教えてください。

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

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

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

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

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

sho888

2022/06/19 01:44

お手数をおかけしてすいません。調べてはいるのですが、配列とランダム関数の組み合わせ方が分かりません。
thkana

2022/06/19 06:06

では、ランダムではなく、例えば'0'キーと'1'キーで画像を切り替える、というお題だったらできるのですか? (わかっていないのは「配列とランダム関数の組み合わせ方」ではないような気がするのです) それはそれとして、「ランダムに表示される」というプログラムの動作はどういうものでしょう? 起動してからの動作を説明してみてください。(ランダムの話以外にも、「そうなの?」と思う点があって...)
guest

回答1

0

ベストアンサー

配列とランダム関数の組み合わせ方が分かりません。

randomfloat(小数)を返すので、配列のインデックスに使うにはint(整数)に直す必要があります。
random() / Reference / Processing.org
int() / Reference / Processing.org

Processing

1PImage[] imgs; 2PImage img; 3float imgX; 4float imgVX; 5 6void setup() { 7 size(800, 800); 8 9 imgs = new PImage[] { 10 loadImage("https://www.gravatar.com/avatar/1f4f0a2782fdb4f59c0acc14a7455416?d=identicon", "png"), 11 loadImage("https://teratail-v2.storage.googleapis.com/uploads/avatars/u13/132786/KnkDDC5A_thumbnail.jpg"), 12 }; 13 14 imgVX = random(1, 5); // 1以上5未満のfloat値 15 16 float f = random(imgs.length); // 0以上2未満のfloat値(1.234のような) 17 int i = int(f); // 0か1(小数点以下を切り捨てる) 18 img = imgs[i]; 19 20 //img = imgs[int(random(imgs.length))]; // まとめて書くと 21} 22 23void draw() { 24 background(127); 25 26 mato(); 27} 28 29void mato() { 30 if (width < imgX) { 31 imgX = 0; 32 imgVX = random(1, 5); 33 img = imgs[int(random(imgs.length))]; 34 } 35 36 image(img, imgX, 150, 50, 50); 37 imgX += imgVX; 38}

Processing

1Character[] charas; 2Character chara; 3 4void setup() { 5 size(800, 800); 6 7 PImage img1 = loadImage("https://www.gravatar.com/avatar/1f4f0a2782fdb4f59c0acc14a7455416?d=identicon", "png"); 8 PImage img2 = loadImage("https://teratail-v2.storage.googleapis.com/uploads/avatars/u13/132786/KnkDDC5A_thumbnail.jpg"); 9 charas = new Character[] { new Character(img1, 0, 150, 2), new Character(img2, 0, 150, 3), }; 10 chara = charas[int(random(charas.length))]; 11} 12 13void draw() { 14 background(127); 15 16 chara.move(); 17 chara.display(); 18} 19 20 21class Character { 22 PImage img; 23 float xpos; 24 float ypos; 25 float xspeed; 26 27 Character(PImage tempImg, float tempXpos, float tempYpos, float tempXspeed) { 28 img = tempImg; 29 xpos = tempXpos; 30 ypos = tempYpos; 31 xspeed = tempXspeed; 32 } 33 34 void display() { 35 image(img, xpos, ypos, 50, 50); 36 } 37 38 void move() { 39 xpos += xspeed; 40 if (width < xpos) { 41 xpos = 0; 42 xspeed = random(1, 5); 43 // ここでグローバル変数をいじるのはどうかとは思うが、まあいいでしょうw 44 chara = charas[int(random(charas.length))]; 45 } 46 } 47}

投稿2022/06/19 06:14

TN8001

総合スコア9317

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問