ここから本文です

processingのプログラムについて質問です void setup(){ size(200,200);

cat********さん

2017/5/1120:35:32

processingのプログラムについて質問です


void setup(){
size(200,200);

ellipseMode(CENTER);rectMode(CENTER);
background(255);
}


void draw(){
int x=100;
int y=100;
stroke(0);
fill(150);
rect(100,100,20,100);

fill(255);
ellipse(100,70,60,60);

fill(0);
ellipse(81,70,16,32);
ellipse(119,70,16,32);

stroke(0);
line(90,150,80,160);
line(110,150,120,160);
}



上記のプログラムはキャラクターを作るものなのですが、
このプログラムにmouseClicked関数を追加して
目をクリックするとその目を消す
という処理を行いたい場合どういったプログラムを書けばいいのでしょうか?

回答よろしくお願いします

閲覧数:
48
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

qui********さん

2017/5/1123:11:36

アニメーションの基本は、今までの画を消して、次の画を描く、です。
ので、drawの先頭でbackgroundで画を消しましょう。それ以降で再描画していますから大丈夫です。
その流れでいくと、「目を消す」というのは実は「目を描かない」ということになります。とりあえず、目を描くかどうかという切り替えの変数を設置し、その変数を調べて描画を切り替えましょう。
boolean eyeClose=false;//追加
void draw(){
background(255);//追加
//略

if(!eyeClose){//追加
fill(0);
ellipse(81,70,16,32);
ellipse(119,70,16,32);
}//追加
//略


目をクリックする、を真面目にやりすぎると苦労しそうですので、ざっくり目を含む長方形を検出することにしてしまいましょう。目をクリックされたら先の目を描くかどうかの変数を描かないように設定してやればいいわけです。

void mouseClicked(){
if(
(70-16<mouseY && mouseY<70+16) && //目のY座標
(
(81-8<mouseX && mouseX<81+8) ||//右目のX座標
(119-8<mouseX && mouseX<119+8)//左目のX座標
)
)
eyeClose=true;
}

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる