2017年10月2日 星期一

Week04*互動技術課堂筆記*

【利用Processing】


*做出簡單小遊戲*

小遊戲深入介紹

1.利用(Week03-1.3)的概念做延伸















程式碼:
PImage imgHook,imgLove; 
float HookX=400,HookY=300;
float HookVX=0,HookVY=0;
float HookAX=0,HookAY=0;
float [][]LoveX=new float[5][4];
float [][]LoveY=new float[5][4];
boolean [][]LoveAlive=new boolean[5][4];
void setup(){
  size(800,600);
  imgHook=loadImage("Hook.png");        
  imgLove=loadImage("Love.png");   
  imageMode(CENTER);  
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      LoveX[i][j]=700-i*100;LoveY[i][j]=100+j*100;LoveAlive[i][j]=true;
    }
  }
}
void draw(){
  background(255);
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      if(dist(LoveX[i][j],LoveY[i][j],HookX,HookY)<100){
        LoveAlive[i][j]=false;
      }
      if(LoveAlive[i][j])image(imgLove,LoveX[i][j],LoveY[i][j],100,100);
    }
  }
  /*if(LoveAlive)image(imgLove,LoveX,LoveY,100,100);  */   
  image(imgHook,HookX,HookY,100,100);
 /* if(dist(LoveX,LoveY,HookX,HookY)<100){
    LoveAlive=false;
  } */
  line(HookX,HookY,400,300);
  
  
  HookX+=HookVX;
  HookY+=HookVY;
  if(HookX<50){HookX=50;HookVX=-HookVX;}
  if(HookX>width-50){HookX=width-50;HookVX=-HookVX;}
  if(HookY<50){HookY=50;HookVY=-HookVY;}
  if(HookY>height-50){HookY=height-50;HookVY=-HookVY;}
  
  HookVX+=HookAX;
  HookVY+=HookAY;
  HookVX*=0.997;
  HookVY*=0.997;
}
void mouseDragged(){
  HookX=mouseX;
  HookY=mouseY;
  HookVX=HookVY=HookAX=HookAY=0;
}
void mouseReleased(){
  HookVX=(400-mouseX)/10.0;
  HookVY=(300-mouseY)/10.0;
  HookAY=0.98;
}


2.簡單概念複習

2.1畫圓















程式碼:
void setup(){ 
  size(800,600);      //視窗初始化大小
}
void draw(){
  for(int i=0;i<5;i++){         //橫為5
    for(int j=0;j<4;j++){          //行為4
      ellipse(700-i*100,100+j*100,100,100);     //fill(顏色編碼)畫圓(座標,座標,大小,大小)<沒有將座標寫死>
    }
  }
}

2.2變顏色















程式碼:
void setup(){
  size(800,600);  //視窗初始化大小
}
void draw(){
  for(int i=0;i<5;i++){    //橫為5
    for(int j=0;j<4;j++){     //行為4
      fill(#3EC1CE);ellipse(700-i*100,100+j*100,100,100);  //fill(顏色編碼)畫圓(座標,座標,大小,大小)
    }
  }
  fill(#A45EE3);ellipse(400,300,100,100);  //一個圓固定位置<將座標寫死>
}

2.3用矩陣替代















程式碼:
float [][]pigx=new float[5][4];      //用矩陣初始化
float [][]pigy=new float[5][4];      //用矩陣初始化
boolean [][]pigAlive=new boolean[5][4];       //藍色圈圈部分都是豬(存活)
void setup(){
  size(800,600);  
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      pigx[i][j]=700-i*100;pigy[i][j]=100+j*100;pigAlive[i][j]=true;   
    } 
  }
}
void draw(){
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      //fill(#3EC1CE);ellipse(700-i*100,100+j*100,100,100);
      fill(#3EC1CE);ellipse(pigx[i][j],pigy[i][j],100,100);
    }
  }
  fill(#A45EE3);ellipse(400,300,100,100);
}

2.4用矩陣替代
















程式碼:
float birdX=100,birdY=400;
float [][]pigx=new float[5][4];
float [][]pigy=new float[5][4];
boolean [][]pigAlive=new boolean[5][4];
void setup(){
  size(800,600);
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      pigx[i][j]=700-i*100;pigy[i][j]=100+j*100;pigAlive[i][j]=true;
    } 
  }
}
void draw(){
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      //fill(#3EC1CE);ellipse(700-i*100,100+j*100,100,100);
      fill(#3EC1CE);ellipse(pigx[i][j],pigy[i][j],100,100);
    }
  }
  fill(#A45EE3);ellipse(birdX,birdY,100,100);
}


3.匯入音樂















程式碼:
import ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup(){
  size(800,600);
  minim=new Minim(this);
  player=minim.loadFile("chicken.mp3",2048);
  player.play();
}
void draw(){

}

沒有留言:

張貼留言