sikakugame


参考書を読みながら作成しました。
//-------------------------------------------
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を合わせる使い方が勉強になりました。