2022年1月8日 星期六

week12 期末作品:打蟑螂 (補教筆記)

今天2022.1.8,我來補教筆記啦

1.遊戲介面上會有兩顆按鈕,分別為紅色開始遊戲鍵,綠色查看分數鍵。


2.進入遊戲後會出現主角蟑螂,藍白脫是攻擊武器,觸及蟑螂即可得分,分數會出現在座標(350,45)的位置;點擊右下角的RESET鍵可以重新開始新的一局。


3.結束畫面會顯示你剛剛所得到的分數,右下角是返回鍵,點擊即可回到首頁。


程式碼如下:
float x,y,x0,y0,x1,y1,x2,y2,vx,vy,vx0,vy0,vx1,vy1,vx2,vy2;
int score=0,a,b,c,count=420;
int condition;//情況
int music;
PFont myFont;
PImage img0,img1,img2,img3,img4,img43,img5,img6,img7,img8,img9,img10,img11,img12;
import ddf.minim.*;
Minim minim;
AudioPlayer player;

void setup(){
  minim = new Minim(this);
  player=minim.loadFile("BGM.mp3");

  size(800,600);
  img0=loadImage("封面.png");
  img1=loadImage("start.png");//讀入圖片
  img2=loadImage("RANKING.png");
  img3=loadImage("內容.png");//背景圖片
  img4=loadImage("Cockroach.png");//小蟑螂
  img12=loadImage("Cockroach-2.png");//中蟑螂
  img43=loadImage("Cockroach-3.png");//大蟑螂
  img5=loadImage("restart.png");//返回鍵
  img6=loadImage("分數版.png");
  img7=loadImage("拖鞋.png");
  img8=loadImage("結束.png");
  img9=loadImage("return.png");
  img10=loadImage("Cockroach1.png");
  img11=loadImage("Cockroach1-2.png");
  generateCockroach();//一般的蟑螂
  generateCockroach0();//一般的蟑螂
  generateCockroach1();//一般的蟑螂 
  generateCockroach2();//特別的蟑螂
  fill(255,0,0);
  textSize(80);
  myFont = createFont("微軟正黑體",30);///中文輸入法程式碼
}
void mousePressed() {///場景切換
    if(condition==0){//主畫面
        if (mouseButton == LEFT&&dist(470,470, mouseX, mouseY)<65){  // 切換到開始遊戲介面
        condition=1;       
       }
          if(mouseButton == LEFT&&dist(600,450, mouseX, mouseY)<50){
          condition=3;
         }
      }
     if(condition==1){//遊戲畫面
        
        player.play();
        if(mouseButton==LEFT&& dist(650,450,mouseX-100,mouseY-100)<50){
        condition=0;//返回鍵
        score=0;
        count=600;
        }
      }
    if(condition==2){//結束畫面
      if (mouseButton == LEFT&&dist(700,550, mouseX, mouseY)<50){// 切換到開始遊戲介面
          condition=0;
        } 
    }
    if(condition==3){//計分畫面
      if(mouseButton==LEFT&& dist(700,520,mouseX,mouseY)<50) {  // 切換到開始遊戲介面
          condition=0;
      } 
     }
    }
void draw(){
  if(condition==0){
    image(img0,0,0,800,600);
    image(img1,400,410,100,100);
    image(img2,560,410,100,100);
    player.pause();
    player.rewind();
  }
  if(condition==1){//condition=1且時間>0=遊戲介面 
    image(img3,0,0,800,600);//背景圖片
    image(img4,x,y,80,80);//小蟑螂圖片  
    image(img10,x1,y1,80,80);//小蟑螂圖片
    image(img11,x0,y0,80,80);//小蟑螂圖片
    image(img5,705,505,88,88);//重製鍵圖片
    x+=vx;y+=vy;//若超過左邊界、右邊界,則會隨機產生一般蟑螂。
    x0+=vx0;y0+=vy0;
    x1+=vx1;y1+=vy1;
    x2+=vx2;  y2+=vy2;//若超過左邊界、右邊界,則會隨機產生特別蟑螂。
    
    if(frameCount%20==0){//每一秒,改一次角度
      float angle = atan2(vy,vx);float angle2=(angle+radians(random(-20,20)));//時間到就轉30度。
      float angle0 = atan2(vy0,vx0);float angle3=(angle0+radians(random(-90,60)));//時間到就轉30度。   
      
      vx =cos(angle2);vy =sin(angle2);//一般蟑螂
      vx0=cos(angle3);vy0=sin(angle3);//一般蟑螂
      vx1=cos(angle2);vy1=sin(angle2);//一般蟑螂
      vx2=sin(angle2);vy2=cos(angle2);//特別蟑螂
      }     
      if(x<0 || y<0||x>600||y>400)generateCockroach();//不管邊界x,y<0或x,y>500,都會產生新的蟑螂。   
      if(mousePressed && dist(mouseX-40,mouseY-40,x,y)<40){
      generateCockroach();//死後產生新的蟑螂。
      score+=10;
     }//一般蟑螂
     if(x0<0 || y0<0||x0>600||y0>400)generateCockroach0();//不管邊界x,y<0或x,y>500,都會產生新的蟑螂。   
      if(mousePressed && dist(mouseX-40,mouseY-40,x0,y0)<40){
      generateCockroach0();//死後產生新的蟑螂。
      score+=10;
     }//一般蟑螂
     if(x1<0 || y1<0||x1>600||y1>400)generateCockroach1();//不管邊界x,y<0或x,y>500,都會產生新的蟑螂。   
      if(mousePressed && dist(mouseX-40,mouseY-40,x1,y1)<40){
      generateCockroach1();//死後產生新的蟑螂。
      score+=10;
     }//一般蟑螂
    
      if(frameCount>180&&frameCount<360){
      image(img12,x2,y2,120,120);//中蟑螂圖片
      if(x2<0 || y2<0||x2>780||y2>580)generateCockroach2();//不管邊界x,y<0或x,y>500,都會產生新的蟑螂。
      if(mousePressed && dist(mouseX-50,mouseY-50,x2,y2)<50){
        generateCockroach2();
        score+=100;
        }     
      }//特別蟑螂 
      image(img7,mouseX-40,mouseY-40,80,80);//產生藍白拖。
    
      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+=300;
        c=score;
        if(score>a){
          a=score;
        }
         if(score<a&&score>b){
           b=score;
         }
        score=0;
        
      } 
  }
       if(condition==2){//結束畫面
       background(186,85,211);
       image(img2,10,5,500,500);
       image(img8,0,0,800,600);
       textFont(myFont,80);
       text(+c,340,260);
       player.pause();//音樂停止
       player.rewind();//從頭播放
      }
      
      if(condition==3){
        image(img6,0,0,800,600);//分數版
        image(img9,650,500,100,100);//返回建
        
        textFont(myFont,44);
        fill(255,255,255);
        text(+a,385,260);
        textFont(myFont,44);
        text(+b,385,450);
      }
      
}

void generateCockroach(){//一般的蟑螂
  int edge=int (random(4));//4個邊
  if(edge==0){
    x=600;y=random(300);vx=-random(1,3);vy=random(-3,+3);
  }else if(edge==1){
    x=random(300);y=400;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 generateCockroach0(){//一般的蟑螂
  int edge0=int (random(4));//4個邊
  if(edge0==0){
    x0=600;y0=random(300);vx0=-random(1,3);vy0=random(-3,+3);
  }else if(edge0==1){
    x0=random(300);y0=400;vx0=-random(-3,3);vy0=random(1,3);
  }else if(edge0==2){
    x=0;y=random(300);vx0=random(1,3);vy0=random(-3,+3);
  }else if(edge0==3){
    x0=random(300);y=0;vx0=random(-3,3);vy0=random(1,3);
  }
}
void generateCockroach1(){//一般的蟑螂
  int edge1=int (random(4));//4個邊
  if(edge1==0){
    x1=300;y1=random(300);vx1=-random(1,3);vy1=random(-3,+3);
  }else if(edge1==1){
    x1=random(300);y1=300;vx1=-random(-3,3);vy1=random(1,3);
  }else if(edge1==2){
    x1=0;y1=random(300);vx1=random(1,3);vy1=random(-3,+3);
  }else if(edge1==3){
    x1=random(300);y1=0;vx1=random(-3,3);vy1=random(1,3);
  }
}
  void generateCockroach2(){///特別的蟑螂
    int edge2=int (random(4));//4個邊
    if(edge2==0){
    x2=600;y2=random(300);vx=-random(1,3);vy=random(-3,+3);
    }else if(edge2==1){
      x2=random(300);y2=400;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);
    }
}





沒有留言:

張貼留言