boolean flag; //boolean型の変数flagを用意
void setup(){
//画面サイズ
size(400,200);
//スイッチの初期値はfalse(オフ)に設定
flag=false;
//図形の初期色を赤(オフ)に設定
fill(255,0,0);
}
void draw(){
background(100);
rect(200,100,50,50);
}
void mousePressed(){
//マウス座標が正方形の範囲内の時
if(mouseX>=200 && mouseX<=250 && mouseY>=100 && mouseY<=150){
if(flag==false){ //クリックする前がオフの時
fill(0,255,0);
flag=true; //クリックしたらオンの状態に変更する
}else{ //クリックする前がオンの時
fill(255,0,0);
flag=false; //クリックしたらオフの状態に変更する
}
}
}
if()内の条件式では、flag==falseというように「==」イコールを二つ用いて下さい。ただし、その後の「クリックしたらオンの状態に変更する」箇所では、flag=trueというように「=」イコールが一つになります。
フラグを用いることで、もう既に済んでしまっている出来事の状態を記憶させておくことができます。それに応じて、条件式を設定すれば、より複雑な状況をプログラムしていくことが可能になります。例えば3回押したらオンになるスイッチもint型変数をカウントとして使えば可能となります。
boolean flag; //オンかオフを判定するフラグ変数
int count; //クリック回数をカウントする変数
void setup(){
size(400,200);
flag=false; //オフに設定しておく
fill(255,0,0);//正方形の色(オフ)を赤にしておく
count=0; //0回目に設定しておく
}
void draw(){
background(100);
rect(200,100,50,50);
}
void mousePressed(){
if(mouseX>=200 && mouseX<=250 && mouseY>=100 && mouseY<=150){
count++; //正方形内をクリックするごとに回数が+1される
if(count>=3){ //クリック回数が3以上なら
if(flag==false){ //スイッチがオフなら
fill(0,255,0); //緑(オン)に変更する
flag=true; //スイッチをオンに変更する
}else{ //スイッチがオンなら
fill(255,0,0); //オフ(赤)に変更する
flag=false; //スイッチをオフに変更する
}
count=0; //カウントを0に戻す
}
}
}
クリックされる前の状態がオンのときはオフへ、オフのときはオンへ切り替えるboolean型の変数flagと同時に、クリック回数を記憶しておくint型変数countがあります。それぞれ切り替わる際には、flagをfalseからtrueへ、あるいはtrueからfalseへ、そして回数も3から0へと変更するような後処理についても忘れずプログラムしておく必要があります。
0 件のコメント:
コメントを投稿