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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

7105閲覧

違う絵柄の画像を5枚横配列に順々に並べていきたいです

bluerose_sea

総合スコア13

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/01/06 08:59

###違う絵柄の画像を5枚横配列に順々に並べていきたいです。

secondを用いて1秒ごとに違う絵柄の画像が一枚ずつ出現していき、5枚それぞれ違う絵柄が表示されると消えてまた一枚ずつ増えていきループする。というプログラムを作りたく思います。画像は5枚、01.png,02.png,03.png,04.png,05.pngを用意しています。

試したこと

PImage[] IMAGES = new PImage[10];

void setup() {

for (int i=0; i<IMAGES.length; i++) {
IMAGES[i] = loadImage(i+".png");
}

void draw() {
background(BG);

int s = second();

for (int i=0; i<s%6; i++) { image(IMAGES[s%6], i*120+65, 180);

}

これだと1枚目、2枚目と増えていくうち画像が全て同じ画像で表示されてしまい、5枚目になると全て5枚同じ絵柄になってしまいます。5枚とも違う画像を表示するにはどうしたらいいでしょうか、ご回答よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

ご質問の内容やカテゴリに記載がありませんので、
推測になりますが、
PImage クラスや setup() draw() メソッドを使っていらっしゃるので、
おそらく、Processing をお使いと思います。

その前提で説明します。
何か勘違いをしていたらご容赦ください。

結論

以下のようにすれば、ご期待の動作をするのではないかと推測します。

Processing

1PImage[] IMAGES = new PImage[5]; 2static int n = 0; 3 4void setup() { 5 for (int i=0; i<IMAGES.length; i++) { 6 IMAGES[i] = loadImage(i+".png"); 7 } 8 size(1024,768); // 画像が5 つ収まるサイズを設定してください 9} 10 11int BG=0xFFFFFFFF; 12 13void draw() { 14 15 background(BG); 16 17 int s = second(); 18 19 for (int i=0; i<=s%5; i++) { 20 image(IMAGES[i], i*120+65, 180); 21 } 22}

説明

ご質問にあった、

これだと1枚目、2枚目と増えていくうち画像が全て同じ画像で表示されてしまい、5枚目になると全て5枚同じ絵柄になってしまいます。5枚とも違う画像を表示するにはどうしたらいいでしょうか

に関する変更は、draw() メソッド内の

Processing

1 image(IMAGES[s%6], i*120+65, 180);

Processing

1 image(IMAGES[i], i*120+65, 180);

に変更したことです。
同じ画像になったのは、配列の添え字として、ループ中に変化しない値を指定していたからであると思います。

その他の変更点は、ご質問のコードをProcessing の実行環境に読ませたときにはエラーがでた部分の修正(} の補完など)
次に、テスト実行に際しては、プログラムの記述にあわせ、
画像ファイル名を、
01.png,02.png,03.png,04.png,05.png
から
0.png,1.png,2.png,3.png,4.png
変更しています。

投稿2019/01/06 12:32

編集2019/01/06 15:00
kozuchi

総合スコア1193

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

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

0

番号と乱数の値の2項目を持つ5要素の配列を用意します。この配列を乱数順に並び替え、その並び替え語の番号を使って画像ファイル名を指定していけば、バラバラの順番で重複しない画像が表示されます。
これは、100問のクイズからランダムに10問のクイズを出題するような処理でも使えます。

投稿2019/01/06 11:41

seastar3

総合スコア2285

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問