画面の右下に箱を5個作ります。マウスがその個々の箱の上に重なると、その都度、箱の大きさを変え、さらに各々の箱の上でクリックをするとフラグが立つ。
つまり5個の箱をボタンに見立ててそれぞれに機能を割り当てたい。
...のだが、ただこれだけのことなのだが、なんだこの呪文は...。不細工なコードだなあ。プログラムは長けりゃエラいってもんじゃない。まだまだヨチヨチ歩きだ、俺。というかコンピュータってほんとこっちの意図を伝えるのが大変。赤ん坊に歩き方を教えるがごとき。
int Boxsize_A = 15; //5つの箱の通常の大きさの変数
int Boxsize_B = 15;
int Boxsize_C = 15;
int Boxsize_D = 15;
int Boxsize_E = 15;
boolean OnA = false; //マウスがその箱の上に乗っかっているかどうかの条件定義
boolean OnB = false;
boolean OnC = false;
boolean OnD = false;
boolean OnE = false;
int CASE = 0; //5つのボタンの何が呼ばれてるか知るための変数
void setup() { //初期化関数
size(600,600); //画面のサイズ
frameRate(30); //フレームレート
}
void draw() { //メインループ
rectMode(CENTER); //箱を5つ書きます
strokeWeight(1);
fill(255);
rect(585, 450, Boxsize_A, Boxsize_A);
rect(585, 470, Boxsize_B, Boxsize_B);
rect(585, 490, Boxsize_C, Boxsize_C);
rect(585, 510, Boxsize_D, Boxsize_D);
rect(585, 530, Boxsize_E, Boxsize_E);
onoff(); //マウスが箱に乗っているかどうか判定する関数を呼び出す
switch(CASE){ //ONになっている箱の大きさを変える
case 1:
Boxsize_A = 20;
break;
case 2:
Boxsize_B = 20;
break;
case 3:
Boxsize_C = 20;
break;
case 4:
Boxsize_D = 20;
break;
case 5:
Boxsize_E = 20;
break;
}
if(mousePressed) { //もしマウスが左クリックされたなら...
if (mouseButton == LEFT) {
if(OnA){ //箱Aの上にマウスが乗っているなら...
CASE = 1; //ボタンAがON
}
if(OnB){ //箱Bの上にマウスが乗っているなら...
CASE = 2; //ボタンBがON
}
if(OnC){
CASE = 3;
}
if(OnD){
CASE = 4;
}
if(OnE){
CASE = 5;
}
}
}
}
void onoff(){ マウスが箱に乗っているかどうか判定する関数(メインループで使用)
if(mouseX >= 580 && mouseX <= 595 && mouseY >=445 && mouseY <=460){
Boxsize_A = 20; //乗っかているなら箱を大きくする
OnA = true; //「乗っかている」と判定する
}else{
Boxsize_A = 15; //乗っかていないなら箱を小さく
OnA = false; //「乗っかていない」と判定する
}
if(mouseX >= 580 && mouseX <= 595 && mouseY >=465 && mouseY <=480){
Boxsize_B = 20;
OnB = true;
}else{
Boxsize_B = 15;
OnB = false;
}
if(mouseX >= 580 && mouseX <= 595 && mouseY >=485 && mouseY <=500){
Boxsize_C = 20;
OnC = true;
}else{
Boxsize_C = 15;
OnC = false;
}
if(mouseX >= 580 && mouseX <= 595 && mouseY >=505 && mouseY <=520){
Boxsize_D = 20;
OnD = true;
}else{
Boxsize_D = 15;
OnD = false;
}
if(mouseX >= 580 && mouseX <= 595 && mouseY >=525 && mouseY <=540){
Boxsize_E = 20;
OnE = true;
}else{
Boxsize_E = 15;
OnE = false;
}
}