2021年12月25日 星期六

week 10 期末作業:打蟑螂(補交筆記)

 這次我用frameCount影格的方式讓特別的蟑螂在特別的時間出現(如圖(1)、圖(2))

特別的蟑螂是圖中的正方形,一般蟑螂是圓形。

當frameCount==180&&frameCount<360的時候,特別蟑螂會出現,也就是說特別的蟑螂會在Time=6出現 ,Time=3的時候消失。

圖(1)

圖(2)

程式碼如下:

float x,y,vx,vy,x2,y2,vx2,vy2;

int count=600;///計時器的總共時間


int score=0;

PFont myFont;///讀入字體

void setup(){

  size(500,500);

  generateCockroach();//一般的蟑螂

  generateCockroach2();//特別的蟑螂

  fill(255,0,0);

  textSize(80);

   myFont = createFont("微軟正黑體",30);///中文輸入法程式碼

}

void draw(){

  

  background(128);

  fill(0);//蟑螂顏色

  ellipse(x,y,10,10);//蟑螂的大小

  x+=vx;  y+=vy;//若超過左邊界、右邊界,則會隨機產生一般蟑螂。

  x2+=vx2;  y2+=vy2;//若超過左邊界、右邊界,則會隨機產生特別蟑螂。

  

  if(frameCount%10==0){//每一秒,改一次角度

    float angle = atan2(vy,vx);

    //float angle2=(angle+radians(90));//時間到就轉90度。

    float angle2=(angle+radians(random(-30,30)));//時間到就轉30度。

    vx =cos(angle2);//一般蟑螂

    vy =sin(angle2);//一般蟑螂

    vx2=sin(angle2);//特別蟑螂

    vy2=cos(angle2);//特別蟑螂

    }

  

  

  if(x<0 || y<0||x>500||y>500)generateCockroach();//不管邊界x,y<0或x,y>500,都會產生新的蟑螂。

  noFill(); ellipse(mouseX,mouseY,50,50);//產生藍白拖。

  if(mousePressed && dist(mouseX,mouseY,x,y)<40){

    generateCockroach();//死後產生新的蟑螂。

    score+=10;///分數加10分

  }

    if(frameCount>180&&frameCount<360){///

    fill(0);rect(x2,y2,20,20);//特別的蟑螂

    if(x2<0 || y2<0||x2>500||y2>500)generateCockroach2();//不管邊界x,y<0或x,y>500,都會產生新的蟑螂。

    if(mousePressed && dist(mouseX,mouseY,x2,y2)<40){

      generateCockroach2();//死後產生新的特別蟑螂。

      score+=100;///分數加100分

      } 

    }

 

 if(count<=0)background(100,50,255);

 //如果秒數<=0,背景色彩改變。

    textFont(myFont);

     text("分數:"+score,350,45);

   

    ///計時器。

    if(count<=0){

      textFont(myFont,80);

      text("遊戲結束",80,200);

    }

    else {

      count--;

    }

      fill(0);

      textSize(36);

      text("Time:" +int(count/60),50,45); ///計時器。

     

  }

void generateCockroach(){//一般的蟑螂

  int edge=int (random(4));//4個邊

  if(edge==0){

  x=300;y=random(300);vx=-random(1,3);vy=random(-3,+3);

  }else if(edge==1){

    x=random(300);y=300;vx=-random(-3,3);vy=random(1,3);

  }else if(edge==2){

    x=0;y=random(300);vx=random(1,3);vy=random(-3,+3);

  }else if(edge==3){

    x=random(300);y=0;vx=random(-3,3);vy=random(1,3);

  }

}

  void generateCockroach2(){///特別的蟑螂

    int edge2=int (random(4));//4個邊

    if(edge2==0){

    x2=300;y2=random(300);vx=-random(1,3);vy=random(-3,+3);

    }else if(edge2==1){

      x2=random(300);y2=300;vx=-random(-3,3);vy=random(1,3);

    }else if(edge2==2){

      x2=0;y2=random(300);vx=random(1,3);vy=random(-3,+3);

    }else if(edge2==3){

      x2=random(300);y2=0;vx=random(-3,3);vy=random(1,3);

    }

}

沒有留言:

張貼留言