参考書を読みながら作成しました。
//-------------------------------------------int sikakux=0;int sikakuy=170;int sikakuw=100;int sikakuh=100;int sikakutype=0;final int notsikaku=50;//□でないものの確率final int sikakuspeed=2;//□のスピードString message="";int messageFrame=0;//メッセージを表示する時間
//初期設定-------------------------------------------void setup(){size(640,480);reset();}//-------------------------------------------void draw(){background(0);fill(200);rect(0,110,width,230);if(!stepUnit()){//stepUnitがtrueでないときmessageFrame=0;//メッセージを消すreset();//リセット関数を呼び出す。}drawsikaku();//□を描写drawtext();//点数を描写}
//点数を描写する関数-------------------------------------------void drawtext(){if(messageFrame>0){messageFrame--;//メッセージを表示する時間を短くしていくfill(255);textAlign(CENTER);textSize(30);text(message,sikakux+sikakuw/2,sikakuy+sikakuh+40);}}
//マウスがクリックされた時-------------------------------------------void mousePressed(){if(isHitMouse()){//isHitMouseがtrueの時messageFrame=60*2;if(sikakutype!=0){//sikakutypeが0でない時message="OK";}else{message="MISS";}}}//マウスがクリックされた時呼び出される-------------------------------------------boolean isHitMouse(){return ( mouseX>sikakux&&mouseX<sikakux+sikakuw&&mouseY>sikakuy&&mouseY<sikakuy+sikakuh);
//マウスが□の範囲内ならばtrueを返す}
//□をリセットする-------------------------------------------void reset(){if(random(100)<notsikaku)sikakutype=1;else sikakutype=0;
//50%の確率でsikakutype=1になる。sikakux=-sikakuw;
//□の位置を元に戻す。
}//□が画面内にあるか-------------------------------------------boolean stepUnit(){sikakux+=sikakuspeed;return (sikakux<=width+sikakuw);
//□が画面より大きくなるとfalseを返す}
//□を描写する-------------------------------------------void drawsikaku(){fill(255);rect(sikakux,sikakuy,sikakuw,sikakuh);if(sikakutype!=0){//sikakutypeが0でないときfill(0);line(sikakux+10,sikakuy,sikakux,sikakuy+sikakuh);}}
ifとtrue,falseを合わせる使い方が勉強になりました。
コメント