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

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

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

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

Q&A

解決済

2回答

2278閲覧

processingにおいてボタン等を作成して、プログラムを切り替えられる方法を知りたいです。

naberyo

総合スコア10

Processing

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

0グッド

0クリップ

投稿2019/07/09 02:35

当方プログラム初心者の学生です。
現在prosessingを用いてプログラムの勉強をしているのですが、ボタン等を作成し
import controlP5.*;

ControlP5 cp5;

String filenameA = null;
String filenameB = null;

void setup(){
size(300,200);
cp5 = new ControlP5(this);

cp5.addButton("100")
.setLabel("100")
.setPosition(50,50)
.setSize(60,30);

cp5.addButton("1000")
.setLabel("1000")
.setPosition(120,50)
.setSize(60,30);

cp5.addButton("exit")
.setLabel("exit")
.setPosition(50,90)
.setSize(130,30);
}

void draw(){
}
のような感じでボタンを作ればいいのはわかるのですが、文字の表示だけでなく、そこからプログラムの切り替えようとするとやり方がわかりません
2つのプログラムは
/bubble100/
int a[]= new int[100];
color []b = new color [500];
int count=0;

void setup(){
size(700,300);
frameRate(30);
set_data();
set_color();
}

void draw(){
int j;
bubble(count);
background(255);
for(j=0;j<a.length;j++){
fill(b[a[j]]);
noStroke();
rect(30+5*j,300-a[j],5,a[j]);
}
count++;
if(count==a.length){
set_data();
count=0;
}
}

void bubble(int i){
int j, tmp;
for(j=a.length-2;j>=i;j--){
if(a[j+1]<a[j]){
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}

void set_data(){
int i;
for(i=0;i<a.length;i++){
a[i]= (int)random(300);
}
}
void set_color(){
int i;
for(i=0;i<500;i++){
b[i]=color((int)random(255),(int)random(255),(int)random(255));
}
}

/bubble1000/
int a[]= new int[1000];
color []b = new color [600];
int count=0;

void setup(){
size(1000,300);
frameRate(200);
set_data();
set_color();
}

void draw(){
int j;
bubble(count);
background(255);
//stroke(random(255),random(255),random(255));
for(j=0;j<a.length;j++){
stroke(b[a[j]]);
line(30+j,300,30+j,300-a[j]/2);
}
count++;
if(count==a.length){
set_data();
count=0;
}
}

void bubble(int i){
int j, tmp;
for(j=a.length-2;j>=i;j--){
if(a[j+1]<a[j]){
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}

void set_data(){
int i;
for(i=0;i<a.length;i++){
a[i]= (int)random(600);
}
}

void set_color(){
int i;
for(i=0;i<600;i++){
b[i]=color((int)random(255),(int)random(255),(int)random(255));
}
}
です

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

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

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

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

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

guest

回答2

0

ベストアンサー

「そのまんま」じゃないけど、参考に...なるかな。booleanどころじゃない前提知識が必要。

Processing

1interface Bubble { 2 void draw(); 3} 4 5class Bubble100 implements Bubble{ 6 int a[]= new int[100]; 7 color []b = new color [500]; 8 int count=0; 9 10 Bubble100() { 11 surface.setSize(700, 300); 12 frameRate(30); 13 set_data(); 14 set_color(); 15 } 16 17 void draw() { 18 int j; 19 bubble(count); 20 background(255); 21 for (j=0; j<a.length; j++) { 22 fill(b[a[j]]); 23 noStroke(); 24 rect(30+5*j, 300-a[j], 5, a[j]); 25 } 26 count++; 27 if (count==a.length) { 28 set_data(); 29 count=0; 30 } 31 } 32 33 void bubble(int i) { 34 int j, tmp; 35 for (j=a.length-2; j>=i; j--) { 36 if (a[j+1]<a[j]) { 37 tmp=a[j]; 38 a[j]=a[j+1]; 39 a[j+1]=tmp; 40 } 41 } 42 } 43 44 void set_data() { 45 int i; 46 for (i=0; i<a.length; i++) { 47 a[i]= (int)random(300); 48 } 49 } 50 void set_color() { 51 int i; 52 for (i=0; i<500; i++) { 53 b[i]=color((int)random(255), (int)random(255), (int)random(255)); 54 } 55 } 56} 57 58class Bubble1000 implements Bubble{ 59 int a[]= new int[1000]; 60 color []b = new color [600]; 61 int count=0; 62 63 Bubble1000() { 64 surface.setSize(1000, 300); 65 frameRate(200); 66 set_data(); 67 set_color(); 68 } 69 70 void draw() { 71 int j; 72 bubble(count); 73 background(255); 74 //stroke(random(255),random(255),random(255)); 75 for (j=0; j<a.length; j++) { 76 stroke(b[a[j]]); 77 line(30+j, 300, 30+j, 300-a[j]/2); 78 } 79 count++; 80 if (count==a.length) { 81 set_data(); 82 count=0; 83 } 84 } 85 86 void bubble(int i) { 87 int j, tmp; 88 for (j=a.length-2; j>=i; j--) { 89 if (a[j+1]<a[j]) { 90 tmp=a[j]; 91 a[j]=a[j+1]; 92 a[j+1]=tmp; 93 } 94 } 95 } 96 97 void set_data() { 98 int i; 99 for (i=0; i<a.length; i++) { 100 a[i]= (int)random(600); 101 } 102 } 103 104 void set_color() { 105 int i; 106 for (i=0; i<600; i++) { 107 b[i]=color((int)random(255), (int)random(255), (int)random(255)); 108 } 109 } 110} 111 112Bubble bubble; 113 114void draw() { 115 if (bubble!=null) { 116 bubble.draw(); 117 } 118} 119 120void keyPressed() { 121 if (key=='0') { 122 bubble=new Bubble100(); 123 } else { 124 bubble=new Bubble1000(); 125 } 126}

投稿2019/07/09 14:16

thkana

総合スコア7629

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

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

naberyo

2019/07/10 05:23

ありがとう御座います! ヒントにさせていただきます!
naberyo

2019/07/10 05:47

ただ 申し訳ありません Bubble bubble; void draw() { if (bubble!=null) { bubble.draw(); } } のところがよくわかりません
thkana

2019/07/10 12:48

Bubbleはinterface、いわば「共通型」で、Bubble型の変数bubbleはBubble型をimplementしたBubble100型やBubble1000型のインスタンスを保持出来ます。 bubble.draw()は、bubble型に保持しているインスタンスのdraw()メソッドを呼び出すことになります。 しかし、bubble変数がなにかのインスタンスを保持する(代入される)前にbubble.draw()を呼び出そうとすると、bubble変数はnullですから実行時エラーになってしまいます。それを避けるためにnullでないことを検査しています。
naberyo

2019/07/12 08:23

ありがとうございます!わかりました!!
guest

0

一番簡単なのはbooleanのflugで管理する方法かなと思います。
Setupで2つのコードの画面サイズとかが違っているのでその辺りもdrawに書かないと完全な変更はできないかもしれません。

Bool buttonFlug = false void draw() { if (buttonFlug) { buttonFlug = false プログラム1 } else { buttonFlug = true    プログラム2 } }

投稿2019/07/09 02:49

編集2019/07/09 05:27
hodoru3sei

総合スコア284

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

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

naberyo

2019/07/09 05:26

申し訳ありません booleanを使ったことが無く、よくわかりません、、、
naberyo

2019/07/09 08:16

申し訳ありません技量が足りず 上手く行きませんでした、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問