2021年12月31日 星期五

WEEK12-阿噗的神奇小筆記(要準備跨年了!!)

   

期末作業開工啦4


💓💙💚💛💜💓💙💚💛💜💓💙💚💛💜💓💙💚💛💜💓💙💚💛💜💓💙💚💛💜💓💙

😅繼續補齊Blog,剩這個禮拜了! 
👸那天姨媽來,所以在家裡線上,但痛到無法動作阿阿
💚(這一個禮拜明園有夜市,買了拔絲地瓜,比之前貴了$10阿阿,但我還是照買)

-------------------------------------------------------------------------------------------------------------------------

1.這次加了成績,並有第一名及第二名。
2.各畫面的部分也快做完了!!預計下禮拜就能放進去。


-依舊先來一張噁心蟑螂圖😵


💩!準備開始囉!💩
-------------------------------------------------------------------------------------------------------------------------

首先老師先選出三個核心主題為我們解說(上上禮拜)

//探討主題:
//(1)蟑螂會從哪裡出現,如何對應移動速度與方向?
//(2)藍白拖怎麼打死蟑螂?
//(3)如何使用三角函數使蟑螂有亂跑的效果? sinx ,cosx,tanx;


-------------------------------------------------------------------------------------------------------------------------

全部程式碼如下:



float x,y,vx,vy,x2,y2,vx2,vy2;
int count=600;///計時器的總共時間
int score=0;
int save[]={0,1,2,3};
PFont myFont;///讀入字體
PImage img1,img2,img3,img4,img5;//讀入圖檔

void setup(){
  size(500,500);
  
  img1=loadImage("start1.png");//讀入圖片
  img2=loadImage("restart1.png");
  img3=loadImage("bg.png");//背景圖片
  img4=loadImage("Cockroach.png");
  img5=loadImage("restart.png");//返回鍵
  generateCockroach();//一般的蟑螂
  generateCockroach2();//特別的蟑螂
  fill(255,0,0);
  textSize(80);
   myFont = createFont("微軟正黑體",30);///中文輸入法程式碼
}
int condition;//情況
void mousePressed() {///場景切換
    
    if(condition==0){
      if (mouseButton == LEFT&&dist(150,150, mouseX-120, mouseY-75)<50){  // 切換到開始遊戲介面
          condition=1;
       }
    }
    if(condition==2){
      if (mouseButton == LEFT&&dist(175,175, mouseX-70, mouseY-70)<50) {  // 切換到開始遊戲介面
          condition=0;
        } 
    }
      if(condition==1){
        if(mouseButton==LEFT&& dist(400,400,mouseX-100,mouseY-100)<50){
        condition=0;//返回鍵
        score=0;
        count=600;
        }
      }
}

void draw(){
  if(condition==0){
    background(255,192,103);
    image(img1,75,75,350,350);
    if (mouseButton == LEFT&&dist(200,200, mouseX, mouseY)<60){  // 切換到開始遊戲介面
          condition=1;
       }
  }
  if(condition==1){//condition=1且時間>0=遊戲介面
    image(img3,0,0,500,500);
    image(img4,x,y,300,300);//蟑螂的大小
    image(img5,450,450,50,50);//返回鍵
    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-150,mouseY-150,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分
        } 
      }//特別蟑螂 
      textFont(myFont);
      text("分數:"+score,350,45); 
      
      fill(255,255,255);
      textSize(36);
      text("Time:" +int(count/60)+"秒",50,45); ///計時器。
      count--;
      
      if(count<=0){
       
        condition=2;//結束介面
        count+=600;
        score=0;
        
      }
      
  }
       if(condition==2){//結束畫面
       background(186,85,211);
       image(img2,10,5,500,500);
       textFont(myFont,80);
       text("遊戲結束",80,160);
      }
  
}


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);
    }
}
-------------------------------------------------------------------------------------------------------------------------
此為執行畫面:


有開始的按鈕,可切換至遊戲畫面。
這次多加了排行榜的按鈕(方方塊),點了可跳至排行畫面。
此為遊戲畫面
已有秒數及分數,並加了一隻蟑螂進去試試。
右下角也加了返回鈕,可跳至開始畫面。
而背景先至網路上找圖,之後會在自己重畫。
此為結束畫面
可按返回建,跳至一開始畫面,之後也會畫畫面進去。
此為這次新增的排行畫面,有三個分數
為前三名,當分數較高者會覆蓋叫低者
較低者則不會記錄在上面。








---------------------------------------------------------------------------------------------------------------------------
以上為現在的進度,畫面又更多元了!
(下一次會放入畫面!!)

沒有留言:

張貼留言