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


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








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

2021年12月30日 星期四

天文社社員招募中week15

        

期末作品完工!


🐱‍👤俄羅斯方塊🐱‍👤


遊戲進行畫面



Game Over的畫面









程式如下:

int[][]grid={ //建立矩陣
  {1,0,0,0,0,0,0,0,0,0,0,1},//  {1,1,1,1,1,1,1,1,1,1,1,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,0,0,0,0,0,0,0,0,0,0,1},
  {1,1,1,1,1,1,1,1,1,1,1,1}
};
int [][]L0={  //每個形狀不同要包括旋轉後的形狀
  {1,0,0,0},
  {1,0,0,0},
  {1,1,0,0},
  {0,0,0,0}};
int [][]L1={
  {0,0,1,0},
  {1,1,1,0},
  {0,0,0,0},
  {0,0,0,0}};
int [][]L2={
  {1,1,0,0},
  {0,1,0,0},
  {0,1,0,0},
  {0,0,0,0}};
int [][]L3={
  {1,1,1,0},
  {1,0,0,0},
  {0,0,0,0},
  {0,0,0,0}};
int [][]O0={
  {1,1,0,0},
  {1,1,0,0},
  {0,0,0,0},
  {0,0,0,0}};
int [][]I0={
  {1,0,0,0},
  {1,0,0,0},
  {1,0,0,0},
  {1,0,0,0}};
int [][]I1={
  {1,1,1,1},
  {0,0,0,0},
  {0,0,0,0},
  {0,0,0,0}};
int [][]J0={
  {0,1,0,0},
  {0,1,0,0},
  {1,1,0,0},
  {0,0,0,0}};
int [][]J1={
  {1,0,0,0},
  {1,1,1,0},
  {0,0,0,0},
  {0,0,0,0}};
int [][]J2={
  {1,1,0,0},
  {1,0,0,0},
  {1,0,0,0},
  {0,0,0,0}};
int [][]J3={
  {1,1,1,0},
  {0,0,1,0},
  {0,0,0,0},
  {0,0,0,0}};
int [][]T0={
  {1,1,1,0},
  {0,1,0,0},
  {0,0,0,0},
  {0,0,0,0}};
int [][]T1={
  {0,1,0,0},
  {1,1,1,0},
  {0,0,0,0},
  {0,0,0,0}};
int [][]T2={
  {0,1,0,0},
  {1,1,0,0},
  {0,1,0,0},
  {0,0,0,0}};
int [][]T3={
  {1,0,0,0},
  {1,1,0,0},
  {1,0,0,0},
  {0,0,0,0}};
int [][]S0={
  {1,0,0,0},
  {1,1,0,0},
  {0,1,0,0},
  {0,0,0,0}};
int [][]S1={
  {0,1,1,0},
  {1,1,0,0},
  {0,0,0,0},
  {0,0,0,0}};
int [][]Z0={
  {1,1,0,0},
  {0,1,1,0},
  {0,0,0,0},
  {0,0,0,0}};
int [][]Z1={
  {0,1,0,0},
  {1,1,0,0},
  {1,0,0,0},
  {0,0,0,0}};
  
void testDeleteAndNext(){  //滿行消失並下一個方塊
  testDelete();
  nextShape=int(random(6));  //隨機方塊
  println(nextShape);
}
void Gameover(){  //當遊戲結束時出現Game Over的文字並停止程式
  textSize(50);
  fill(255);
  text("Game Over", 20, 250); 
  stop();
}
void testDelete(){  //滿行消失並往下一行
  for(int i=18;i>0;i--){
    int bad=0;
    for(int j=1;j<11;j++){
      if(grid[i][j]!=0)bad++;
    }
    if(bad==10){
      for(int ii=i;ii>1;ii--){
        for(int j=1;j<11;j++)grid[ii][j]=grid[ii-1][j];
      }
      i++;
    }
  }
}
int nextShape=0;

boolean L0safe(int x,int y){  //開始做不同形狀的方塊了
  if(grid[y][x]==0 && grid[y+1][x]==0 && grid[y+2][x]==0 && grid[y+2][x+1]==0)return true;
  return false;
}
void L0(int x,int y){
  fill(255,165,79);
  if(L0safe(x,y) ){
    rect(25*x    ,25*y    ,25,25);
    rect(25*x    ,25*(y+1),25,25);
    rect(25*x    ,25*(y+2),25,25);
    rect(25*(x+1),25*(y+2),25,25);
  }
}

boolean L1safe(int x,int y){
  if(grid[y+1][x]==0 && grid[y+1][x+1]==0 && grid[y][x+2]==0 && grid[y+1][x+2]==0)return true;
  return false;
}
void L1(int x,int y){
  fill(255,165,79);
  if(L1safe(x,y) ){
    rect(25*x    ,25*(y+1),25,25);
    rect(25*(x+1),25*(y+1),25,25);
    rect(25*(x+2),25*y    ,25,25);
    rect(25*(x+2),25*(y+1),25,25);
  }
}

boolean L2safe(int x,int y){
  if(grid[y][x]==0 && grid[y+1][x+1]==0 && grid[y][x+1]==0 && grid[y+2][x+1]==0)return true;
  return false;
}
void L2(int x,int y){
  fill(255,165,79);
  if(L2safe(x,y) ){
    rect(25*x    ,25*y    ,25,25);
    rect(25*(x+1),25*(y+1),25,25);
    rect(25*(x+1),25*y    ,25,25);
    rect(25*(x+1),25*(y+2),25,25);
  }
}

boolean L3safe(int x,int y){
  if(grid[y][x]==0 && grid[y][x+1]==0 && grid[y][x+2]==0 && grid[y+1][x]==0)return true;
  return false;
}
void L3(int x,int y){
  fill(255,165,79);
  if(L3safe(x,y) ){
    rect(25*x    ,25*y    ,25,25);
    rect(25*(x+1),25*y    ,25,25);
    rect(25*(x+2),25*y    ,25,25);
    rect(25*x    ,25*(y+1),25,25);
  }
}

boolean Osafe(int x,int y){
  if(grid[y][x]==0 && grid[y+1][x+1]==0 && grid[y+1][x]==0 && grid[y][x+1]==0)return true;
  return false;
}
void O0(int x,int y){
  fill(238,230,133);
  if(Osafe(x,y) ){
    rect(25*x    ,25*y    ,25,25);
    rect(25*x    ,25*(y+1),25,25);
    rect(25*(x+1),25*y    ,25,25);
    rect(25*(x+1),25*(y+1),25,25);
  }
}

boolean I0safe(int x,int y){
  if(grid[y][x]==0 && grid[y][x+1]==0 && grid[y][x+2]==0 && grid[y][x+3]==0)return true;
  return false;
}
void I0(int x,int y){
  fill(176,226,255);
  if(I0safe(x,y) ){
    rect(25*x    ,25*y,25,25);
    rect(25*(x+1),25*y,25,25);
    rect(25*(x+2),25*y,25,25);
    rect(25*(x+3),25*y,25,25);
  }
}

boolean I1safe(int x,int y){
  if(grid[y][x]==0 && grid[y+1][x]==0 && grid[y+2][x]==0 && grid[y+3][x]==0)return true;
  return false;
}
void I1(int x,int y){
  fill(176,226,255);
  if(I1safe(x,y) ){
    rect(25*x    ,25*y,25,25);
    rect(25*x    ,25*(y+1),25,25);
    rect(25*x    ,25*(y+2),25,25);
    rect(25*x    ,25*(y+3),25,25);
  }
}

boolean J0safe(int x,int y){
  if(grid[y][x+1]==0 && grid[y+1][x+1]==0 && grid[y+2][x+1]==0 && grid[y+2][x]==0)return true;
  return false;
}
void J0(int x,int y){
  fill(106,90,205);
  if(J0safe(x,y) ){
    rect(25*x    ,25*(y+2),25,25);
    rect(25*(x+1),25*(y+1),25,25);
    rect(25*(x+1),25*(y+2),25,25);
    rect(25*(x+1),25*y,25,25);
  }
}

boolean J1safe(int x,int y){
  if(grid[y][x]==0 && grid[y+1][x]==0 && grid[y+1][x+1]==0 && grid[y+1][x+2]==0)return true;
  return false;
}
void J1(int x,int y){
  fill(106,90,205);
  if(J1safe(x,y) ){
    rect(25*x    ,25*y    ,25,25);
    rect(25*x    ,25*(y+1),25,25);
    rect(25*(x+1),25*(y+1),25,25);
    rect(25*(x+2),25*(y+1),25,25);
  }
}

boolean J2safe(int x,int y){
  if(grid[y][x]==0 && grid[y+2][x]==0 && grid[y+1][x]==0 && grid[y][x+1]==0)return true;
  return false;
}
void J2(int x,int y){
  fill(106,90,205);
  if(J2safe(x,y) ){
    rect(25*x    ,25*y    ,25,25);
    rect(25*x    ,25*(y+2),25,25);
    rect(25*x    ,25*(y+1),25,25);
    rect(25*(x+1),25*y,25,25);
  }
}

boolean J3safe(int x,int y){
  if(grid[y][x]==0 && grid[y+1][x+2]==0 && grid[y][x+1]==0 && grid[y][x+2]==0)return true;
  return false;
}
void J3(int x,int y){
  fill(106,90,205);
  if(J3safe(x,y) ){
    rect(25*x    ,25*y,25,25);
    rect(25*(x+2),25*(y+1),25,25);
    rect(25*(x+1),25*y,25,25);
    rect(25*(x+2),25*y,25,25);
  }
}

boolean T0safe(int x,int y){
  if(grid[y][x]==0 && grid[y][x+1]==0 && grid[y][x+2]==0 && grid[y+1][x+1]==0)return true;
  return false;
}
void T0(int x,int y){
  fill(205,181,205);
  if(T0safe(x,y) ){
    rect(25*x    ,25*y,25,25);
    rect(25*(x+1),25*y,25,25);
    rect(25*(x+2),25*y,25,25);
    rect(25*(x+1),25*(y+1),25,25);
  }
}

boolean T1safe(int x,int y){
  if(grid[y+1][x]==0 && grid[y+1][x+1]==0 && grid[y][x+2]==0 && grid[y+1][x+2]==0)return true;
  return false;
}
void T1(int x,int y){
  fill(205,181,205);
  if(T1safe(x,y) ){
    rect(25*(x+1),25*(y+1),25,25);
    rect(25*x    ,25*(y+1),25,25);
    rect(25*(x+1),25*y,25,25);
    rect(25*(x+2),25*(y+1),25,25);
  }
}

boolean T2safe(int x,int y){
  if(grid[y+1][x]==0 && grid[y][x+1]==0 && grid[y+1][x+1]==0 && grid[y+2][x+1]==0)return true;
  return false;
}
void T2(int x,int y){
  fill(205,181,205);
  if(T2safe(x,y) ){
    rect(25*x    ,25*(y+1),25,25);
    rect(25*(x+1),25*y,25,25);
    rect(25*(x+1),25*(y+1),25,25);
    rect(25*(x+1),25*(y+2),25,25);
  }
}

boolean T3safe(int x,int y){
  if(grid[y][x]==0 && grid[y+1][x]==0 && grid[y+2][x]==0 && grid[y+1][x+1]==0)return true;
  return false;
}
void T3(int x,int y){
  fill(205,181,205);
  if(T3safe(x,y) ){
    rect(25*x    ,25*y,25,25);
    rect(25*x    ,25*(y+1),25,25);
    rect(25*x    ,25*(y+2),25,25);
    rect(25*(x+1),25*(y+1),25,25);
  }
}

boolean S0safe(int x,int y){
  if(grid[y][x]==0 && grid[y+1][x]==0 && grid[y+1][x+1]==0 && grid[y+2][x+1]==0)return true;
  return false;
}
void S0(int x,int y){
  fill(193,255,193);
  if(S0safe(x,y) ){
    rect(25*x    ,25*y,25,25);
    rect(25*x    ,25*(y+1),25,25);
    rect(25*(x+1),25*(y+1),25,25);
    rect(25*(x+1),25*(y+2),25,25);
  }
}

boolean S1safe(int x,int y){
  if(grid[y][x+1]==0 && grid[y][x+2]==0 && grid[y+1][x]==0 && grid[y+1][x+1]==0)return true;
  return false;
}
void S1(int x,int y){
  fill(193,255,193);
  if(S1safe(x,y) ){
    rect(25*(x+1),25*y,25,25);
    rect(25*(x+2),25*y,25,25);
    rect(25*x    ,25*(y+1),25,25);
    rect(25*(x+1),25*(y+1),25,25);
  }
}

boolean Z0safe(int x,int y){
  if(grid[y][x]==0 && grid[y+1][x+2]==0 && grid[y][x+1]==0 && grid[y+1][x+1]==0)return true;
  return false;
}
void Z0(int x,int y){
  fill(250,128,124);
  if(Z0safe(x,y) ){
    rect(25*x    ,25*y    ,25,25);
    rect(25*(x+2),25*(y+1),25,25);
    rect(25*(x+1),25*y    ,25,25);
    rect(25*(x+1),25*(y+1),25,25);
  }
}

boolean Z1safe(int x,int y){
  if(grid[y+1][x]==0 && grid[y+2][x]==0 && grid[y][x+1]==0 && grid[y+1][x+1]==0)return true;
  return false;
}
void Z1(int x,int y){
  fill(250,128,124);
  if(Z1safe(x,y) ){
    rect(25*x    ,25*(y+1),25,25);
    rect(25*x    ,25*(y+2),25,25);
    rect(25*(x+1),25*y    ,25,25);
    rect(25*(x+1),25*(y+1),25,25);
  }
}

void setup(){
  size(300,500);
  nextShape=int(random(6));
}

int b=0;
float []vx={0,0,300,500};
int rot=0; //旋轉
void draw(){
  background(0);
  if(nextShape==0)L0(nowX,nowY);
  else if(nextShape==1)O0(nowX,nowY);
  else if(nextShape==2)I0(nowX,nowY);
  else if(nextShape==3)J0(nowX,nowY);
  else if(nextShape==4)T0(nowX,nowY);
  else if(nextShape==5)S0(nowX,nowY);
  else if(nextShape==6)Z0(nowX,nowY);

  for(int x=0;x<12;x++){
    for(int y=0;y<20;y++){
      if(y==0) fill(70,130,180);
      else if(grid[y][x]==1)fill(70,130,180);  //wall
      else if(grid[y][x]==2)fill(250,128,124);
      else if(grid[y][x]==3 || grid[y][x]==10 || grid[y][x]==16 || grid[y][x]==19)fill(255,165,79); //orangeL
      else if(grid[y][x]==4)fill(238,230,133);  //yellowO
      else if(grid[y][x]==5 || grid[y][x]==11)fill(176,226,255);  //blueI
      else if(grid[y][x]==6 || grid[y][x]==12 || grid[y][x]==17 || grid[y][x]==20)fill(106,90,205);  //deepblueJ
      else if(grid[y][x]==7 || grid[y][x]==13 || grid[y][x]==18 || grid[y][x]==21)fill(205,181,205);  //purpleT
      else if(grid[y][x]==8 || grid[y][x]==14)fill(193,255,193);  //greenS
      else if(grid[y][x]==9 || grid[y][x]==15)fill(250,128,124);  //pinkZ
      else fill(0);
      rect(x*25,y*25,25,25);
      if(x>300)x=-x;
      if(x<0)x=-x; 
    }
  }
  if(rot==0&&nextShape==0){
    L0(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==0 && L0safe(nowX,nowY+1))nowY++;
      else{        
        grid[nowY][nowX]=3;
        grid[nowY+1][nowX]=3;
        grid[nowY+2][nowX]=3;
        grid[nowY+2][nowX+1]=3;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(L0safe(nowX,nowY)==false ){ //假如凝結就game over
          Gameover();   
        }
      }
    }
  }
  else if(rot==0&&nextShape==1||rot==1&&nextShape==1||rot==2&&nextShape==1||rot==3&&nextShape==1){
    O0(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==1 && Osafe(nowX,nowY+1))nowY++;
      else{      
        grid[nowY][nowX]=4;
        grid[nowY+1][nowX]=4;
        grid[nowY][nowX+1]=4;
        grid[nowY+1][nowX+1]=4;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(Osafe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==0&&nextShape==2||rot==2&&nextShape==2){
    I0(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==2 && I0safe(nowX,nowY+1))nowY++;
      else{      
        grid[nowY][nowX]=5;
        grid[nowY][nowX+1]=5;
        grid[nowY][nowX+2]=5;
        grid[nowY][nowX+3]=5;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(I0safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==0&&nextShape==3){
    J0(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==3 && J0safe(nowX,nowY+1))nowY++;
      else{      
        grid[nowY+2][nowX]=6;
        grid[nowY+1][nowX+1]=6;
        grid[nowY+2][nowX+1]=6;
        grid[nowY][nowX+1]=6;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(J0safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==0&&nextShape==4){
    T0(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==4 && T0safe(nowX,nowY+1))nowY++;
      else{      
        grid[nowY][nowX]=7;
        grid[nowY][nowX+1]=7;
        grid[nowY][nowX+2]=7;
        grid[nowY+1][nowX+1]=7;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(T0safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==0&&nextShape==5||rot==2&&nextShape==5){
    S0(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==5 && S0safe(nowX,nowY+1))nowY++;
      else{      
        grid[nowY][nowX]=8;
        grid[nowY+1][nowX]=8;
        grid[nowY+1][nowX+1]=8;
        grid[nowY+2][nowX+1]=8;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(S0safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==0&&nextShape==6||rot==2&&nextShape==6){
    Z0(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==6 && Z0safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY][nowX]=9;
        grid[nowY+1][nowX+2]=9;
        grid[nowY][nowX+1]=9;
        grid[nowY+1][nowX+1]=9;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(Z0safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==1&&nextShape==0){
    L1(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==0 && L1safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY+1][nowX]=10;
        grid[nowY+1][nowX+1]=10;
        grid[nowY][nowX+2]=10;
        grid[nowY+1][nowX+2]=10;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(L1safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==1&&nextShape==2||rot==3&&nextShape==2){
    I1(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==2 && I1safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY+3][nowX]=11;
        grid[nowY+2][nowX]=11;
        grid[nowY+1][nowX]=11;
        grid[nowY][nowX]=11;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(I1safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==1&&nextShape==3){
    J1(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==3 && J1safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY][nowX]=12;
        grid[nowY+1][nowX]=12;
        grid[nowY+1][nowX+1]=12;
        grid[nowY+1][nowX+2]=12;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(J1safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  if(rot==1&&nextShape==4){
    T1(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==4 && T1safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY+1][nowX+1]=13;
        grid[nowY+1][nowX]=13;
        grid[nowY][nowX+1]=13;
        grid[nowY+1][nowX+2]=13;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(T1safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==1&&nextShape==5||rot==3&&nextShape==5){
    S1(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==5 && S1safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY][nowX+1]=14;
        grid[nowY][nowX+2]=14;
        grid[nowY+1][nowX]=14;
        grid[nowY+1][nowX+1]=14;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(S1safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  if(rot==1&&nextShape==6||rot==3&&nextShape==6){
    Z1(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==6 && Z1safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY+1][nowX]=15;
        grid[nowY+2][nowX]=15;
        grid[nowY][nowX+1]=15;
        grid[nowY+1][nowX+1]=15;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(Z1safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==2&&nextShape==0){
    L2(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==0 && L2safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY][nowX]=16;
        grid[nowY+1][nowX+1]=16;
        grid[nowY][nowX+1]=16;
        grid[nowY+2][nowX+1]=16;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(L2safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==2&&nextShape==3){
    J2(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==3 && J2safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY][nowX]=17;
        grid[nowY+2][nowX]=17;
        grid[nowY+1][nowX]=17;
        grid[nowY][nowX+1]=17;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(J2safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==2&&nextShape==4){
    T2(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==4 && T2safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY+1][nowX]=18;
        grid[nowY][nowX+1]=18;
        grid[nowY+1][nowX+1]=18;
        grid[nowY+2][nowX+1]=18;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(T2safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==3&&nextShape==0){
    L3(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==0 && L3safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY][nowX]=19;
        grid[nowY][nowX+1]=19;
        grid[nowY][nowX+2]=19;
        grid[nowY+1][nowX]=19;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(L3safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==3&&nextShape==3){
    J3(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==3 && J3safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY][nowX]=20;
        grid[nowY+1][nowX+2]=20;
        grid[nowY][nowX+1]=20;
        grid[nowY][nowX+2]=20;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(J3safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
  else if(rot==3&&nextShape==4){
    T3(nowX,nowY);
    if(frameCount%20==0){
      if(nextShape==4 && T3safe(nowX,nowY+1))nowY++;
      else{
        grid[nowY][nowX]=21;
        grid[nowY+1][nowX]=21;
        grid[nowY+2][nowX]=21;
        grid[nowY+1][nowX+1]=21;
        nowX=6;nowY=0;
        testDeleteAndNext();
        if(T3safe(nowX,nowY)==false ){
          Gameover();   
        }
      }
    }
  }
}
int nowX=6,nowY=1;
void keyPressed(){  //按鍵盤左右下鍵可移動,上鍵可旋轉
  if(keyCode==RIGHT && grid[nowY][nowX+1]==0 ){ b=3; nowX++; }
  if(keyCode==LEFT && grid[nowY][nowX-1]==0 ) { b=2; nowX--; }
  if(keyCode==UP)rot=(rot+1)%4;
  if(keyCode==DOWN){ b=0; nowY++; }
}




顏色資料庫



   (70,130,180)

  (250,128,124)

 (255,165,79)

(176,226,255)

 (106,90,205)

(205,181,205)

(193,255,193)

(250,128,124)

 (238,230,133)



🍮一共有778行🍩


2021年12月27日 星期一

期末

 有去教室上課當面問老師關於子彈碰撞的問題

跟FB範例的兩個方塊碰撞的程式不一樣

我愛卯咪Week14

 

互動技術概論🎮


期末遊戲Day2
這禮拜開始寫程式,在聽完老師講解連續動圖後,我們寫好連續動圖的程式
PImage img,img1,img2,img3,img4,img5,img6,img7,img8,img9,img10,img11,img12,img13,img14,img15,
img16,img17;///宣告圖片
void setup(){
  size(400,600);
  img=loadImage("egg.png");///讀入圖片
  img1=loadImage("panda1.png");
  img2=loadImage("panda2.png");
  img3=loadImage("panda3.png");
  img4=loadImage("panda4.png");
  img5=loadImage("panda5.png");
  img6=loadImage("panda6.png");
  img7=loadImage("panda7.png");
  img8=loadImage("panda8.png");
  img9=loadImage("panda9.png");
  img10=loadImage("panda10.png");
  img11=loadImage("panda11.png");
  img12=loadImage("panda12.png");
  img13=loadImage("panda13.png");
  img14=loadImage("panda14.png");
  img15=loadImage("panda15.png");
  img16=loadImage("panda16.png");
  img17=loadImage("panda17.png");
  imageMode(CENTER);///圖片置中
}
讀入好照片後就可以處理連續動圖了
PImage img,img1,img2,img3,img4,img5,img6,img7,img8,img9,img10,img11,img12,img13,img14,img15,img16,img17;
int state=0,remainT=0,count=1800,count1=3000,count2=0,count3=0,x=200, y=300,win=0;
void setup(){
  size(400,600);
  img=loadImage("egg.png");
  img1=loadImage("panda1.png");
                    .
                    .
                    .
  imageMode(CENTER);
}
void draw(){
  count--;
  count1--;
  if(count==0) {state=1;count1=-1;}
  else if(count1==0) {state=3;count=-1;}
  else if(count==900) {state=0;}
  else if(count1==1500) state=2;
  if(win==5) state=10;
  if(count2==0)background(255);
  else background(#D6D4D4);
  //image( img, 0,0);
  image( img ,x,y);
  if(state==0){//餓了
    image( img1 ,x,y);
  }
  if(state==1){//餓死了
    image( img2 ,x,y);
  }
  if(state==2){//玩
    image( img3 ,x,y);
  }
  if(state==3){//無聊死了
    image( img4 ,x,y);
  }
  if(state==4){//吃
    remainT--;
    count3++;
    if(remainT>60){
      image( img5 ,x,y);
    }
    else{
      image( img6 ,x,y);
    }   
  }
  if(state==5){//吃死了
    remainT--;
    if(remainT>60){
      image( img7 ,x,y);
    }
    else{
      image( img8 ,x,y);
    }
  }
  if(state==6){//打球
    count3++;
    remainT--;
    if(remainT>60){
      image( img9 ,x,y);
    }
    else{
      image( img10 ,x,y);
    }
  }
  if(state==7){//吃球
    remainT--;
    if(remainT>60){
      image( img11 ,x,y);
    }
    else{
      image( img12 ,x,y);
    }
  }
  if(state==8){//洗澡
    remainT--;
    if(remainT>60){
      image( img13 ,x,y);
    }
    else{
      image( img14 ,x,y);
    }
  }
  if(state==9){//喝洗澡水
    remainT--;
    if(remainT>60){
      image( img15 ,x,y);
    }
    else{
      image( img16 ,x,y);
    }
  }
  if(state==10){//贏了
    image( img17 ,x,y);
  }
}
void mousePressed(){
  if(mouseX>=90&&mouseX<=160&&mouseX>=90){
    if(mouseY>10*50-25 && mouseY<10*50+50){
      if(count3>0){
        state=5;
        remainT=180;
        count=-1;
        count1=-1;
      }
      else if(state!=4&&state!=1&&state!=3&&state!=5&&state!=7){
        state=4;
        remainT=180;
        count=1800;
        win++;
      }
      else if(state==4){
        state=5;
        remainT=180;
        count=-1;
        count1=-1;
      }
    }
  }

圖片已經可以放上去了


這禮拜進度到這,但圖片內容稍改,所以下禮拜還要改一下圖