前提・実現したいこと
左クリックで波紋上に、右クリックで逆にどんどん円が縮んでいくようなプログラムを作りました。
実現したいのは素早くクリックした場合でも、円がどんどん出てくるようにすることです。
発生している問題・エラーメッセージ
波紋がいくらクリックしても一個ずつしか出てきてくれません。
該当のソースコード
processingです
int i=10;
Hamon[] hamons = new Hamon[i];
void setup(){
int k;
size(600,600);
colorMode(RGB);
for(k=0;k<i; k++){
hamons[k] = new Hamon();
}
}
void draw(){
background(0,100,255);
int k;
for(k=0; k<i; k++){
if(hamons[k].act==1){
hamons[k].expend();
hamons[k].display();
hamons[k].end();
}else if(hamons[k].act==2){
hamons[k].shrink();
hamons[k].display2();
hamons[k].end2();
}
}
}
void mousePressed(){
for(int k=0; k<i; k++){
if(hamons[k].act==0){
switch(mouseButton){
case LEFT:
hamons[k].mouseleft();
break;
case RIGHT:
hamons[k].mouseright();
break;
}
}
}
}
class Hamon{
PVector location;
float size;
float size2;
int col;
int act;
int a=0;
Hamon(){
size = 0;
location = new PVector(mouseX, mouseY);
col = int(random(255)); act = 0;
}
void mouseleft(){
size = 0;
location.x = mouseX;
location.y = mouseY;
col = int(random(255));
act = 1;
}
void display(){
stroke(col,255,255);
strokeWeight(4.5);
noFill();
ellipse(location.x, location.y, size, size);
}
void expend(){
size += 6.0;
}
void end(){
if(size>700){
size =0;
act =0;
}
}
void mouseright(){
size2 = 500;
location.x = mouseX;
location.y = mouseY;
col = int(random(255));
act = 2;
}
void display2(){
stroke(col,255,255);
strokeWeight(4.5);
noFill();
ellipse(location.x, location.y, size2, size2);
}
void shrink(){
size2 = size2 - 6.0;
}
void end2(){
if(size2<0){
size2 =0;
act =0;
}
}
}
試したこと
int i=10;
Hamon[] hamons = new Hamon[i];
で波紋が連続でクリックしても10個までは作れるようにしたつもりです。
このプログラムを作る前に、クリックすると波紋ができるようなものを作った時は、連続でクリックしたときにどんどん波紋ができてくれたので、同じようなやり方で右クリックと左クリックを分けてみたところうまくいかなかったです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/30 13:44
2020/11/30 23:45
2020/12/01 00:08