2017年11月6日 星期一

Week08_一個上課筆記

作業一: 作業製作中 _ 爆爆王

程式教學
改成雙人遊戲,人物會被炸掉。
void setup(){
  size(850,500);
}
int gameover=0;
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int []waterJ=new int[100];
int []waterI=new int[100];
int []waterS=new int[100];
int []waterT=new int[100];


int user2J=3,user2I=5;
float user2X,user2Y;

void draw(){
  background(#80BF47);
  noStroke();
  for(int i=0;i<10;i++){
    for(int j=0;j<17;j++){
      if((j-i)%2 ==0) fill(#AFE380);
      else fill(#80BF47);
      rect(j*50,i*50,50,50);
    }
  }
  for(int i=0 ; i<10 ; i+=3){
    for(int j=0 ; j<17 ; j+=4)
    {
      fill(#AA8215);
      rect(j*50,i*50,50,50);
    }
  }

  fill(255,0,0);  ellipse(userJ*50+25,userI*50+25,50,50);  // User
  fill(0,0,255);  ellipse(user2J*50+25,user2I*50+25,50,50);  // User2
  for(int i=0; i<waterN; i++){
    if(waterT[i]>0){
    fill(#9EE7F5);  ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
    waterT[i]--;
    if(waterT[i]==0)  waterT[i]=-60;
    }
    
    if(gameover==1)   background(255,0,0);
    if(gameover==2)   background(0,0,255);
    
    if(waterT[i]<0){
      for(int k=-waterS[i]+3;k<=waterS[i]-3;k++){
        fill(255);  rect((waterJ[i]+k)*50,(waterI[i])*50,50,50);
        fill(255);  rect((waterJ[i])*50,(waterI[i]+k)*50,50,50);
        if(dist(waterJ[i]+k,waterI[i], userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i],waterI[i]+k, userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i]+k,waterI[i], user2J,user2I)==0)  gameover=2;
        if(dist(waterJ[i],waterI[i]+k, user2J,user2I)==0)  gameover=2;
      }
      waterT[i]++;
    }
  }
  
}

void keyPressed(){
  if(keyCode==LEFT) userJ--;
  if(keyCode==RIGHT) userJ++;
  if(keyCode==UP) userI--;
  if(keyCode==DOWN) userI++;
  if(key=='0'){
    waterI[waterN]=userI;  waterJ[waterN]=userJ;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
  
  if(keyCode=='A') user2J--;
  if(keyCode=='D') user2J++;
  if(keyCode=='W') user2I--;
  if(keyCode=='S') user2I++;
  if(key==' '){
    waterI[waterN]=user2I;  waterJ[waterN]=user2J;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
}


作業二: 作業製作中 _ 爆爆王

程式教學
增設牆壁。
void setup(){
  size(850,500);
}
int gameover=0;
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
//PImage img;
int []waterJ=new int[100];
int []waterI=new int[100];
int []waterS=new int[100];
int []waterT=new int[100];
int map[][]={{1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};

int user2J=3,user2I=5;
float user2X,user2Y;

void draw(){
  background(#80BF47);
  noStroke();
  for(int i=0;i<10;i++){
    for(int j=0;j<17;j++){
      if((j-i)%2 ==0) fill(#AFE380);
      else fill(#80BF47);
      rect(j*50,i*50,50,50);
      /*if(map[i][j]==2)  img=loadImage("1.jpg");
      image(img,0,0,50,50);*/
      if(map[i][j]==1)      fill(#DE9B1F);
      rect(j*50,i*50,50,50);
    }
     
  }

  fill(255,0,0);  ellipse(userJ*50+25,userI*50+25,50,50);  // User
  fill(0,0,255);  ellipse(user2J*50+25,user2I*50+25,50,50);  // User2
  for(int i=0; i<waterN; i++){
    if(waterT[i]>0){
    fill(#9EE7F5);  ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
    waterT[i]--;
    if(waterT[i]==0)  waterT[i]=-60;
    }
    
    if(gameover==1)   background(255,0,0);
    if(gameover==2)   background(0,0,255);
    
    if(waterT[i]<0){
      for(int k=-waterS[i]+3;k<=waterS[i]-3;k++){
        fill(255);  rect((waterJ[i]+k)*50,(waterI[i])*50,50,50);
        fill(255);  rect((waterJ[i])*50,(waterI[i]+k)*50,50,50);
        if(dist(waterJ[i]+k,waterI[i], userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i],waterI[i]+k, userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i]+k,waterI[i], user2J,user2I)==0)  gameover=2;
        if(dist(waterJ[i],waterI[i]+k, user2J,user2I)==0)  gameover=2;
      }
      waterT[i]++;
    }
  }
  
}

void keyPressed(){
  if(keyCode==LEFT && map[userI][userJ-1]==0) userJ--;
  if(keyCode==RIGHT && map[userI][userJ+1]==0) userJ++;
  if(keyCode==UP && map[userI-1][userJ]==0) userI--;
  if(keyCode==DOWN && map[userI+1][userJ]==0) userI++;
  if(key=='0'){
    waterI[waterN]=userI;  waterJ[waterN]=userJ;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
  
  if(keyCode=='A' && map[user2I][user2J-1]==0) user2J--;
  if(keyCode=='D'&& map[user2I][user2J+1]==0) user2J++;
  if(keyCode=='W'&& map[user2I-1][user2J]==0) user2I--;
  if(keyCode=='S'&& map[user2I+1][user2J]==0) user2I++;
  if(key==' '){
    waterI[waterN]=user2I;  waterJ[waterN]=user2J;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
}

作業三: 作業製作中 _ 爆爆王


程式教學
牆壁用貼圖方式,未完成。
void setup(){
  size(850,500);
  img=loadImage("1.jpg");
}

int gameover=0;
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
PImage img;
int []waterJ=new int[100];
int []waterI=new int[100];
int []waterS=new int[100];
int []waterT=new int[100];
int map[][]={{1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};

int user2J=3,user2I=5;
float user2X,user2Y;

void draw(){
  background(#80BF47);
  noStroke();
  for(int i=0;i<10;i++){
    for(int j=0;j<17;j++){
      if((j-i)%2 ==0) fill(#AFE380);
      else fill(#80BF47);
      rect(j*50,i*50,50,50);
      if(map[i][j]==0){ fill(#DE9B1F);  rect(j*50,i*50,50,50);}
      else image(img,j*50,i*50,50,50);
    }
     
  }

  fill(255,0,0);  ellipse(userJ*50+25,userI*50+25,50,50);  // User
  fill(0,0,255);  ellipse(user2J*50+25,user2I*50+25,50,50);  // User2
  for(int i=0; i<waterN; i++){
    if(waterT[i]>0){
    fill(#9EE7F5);  ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
    waterT[i]--;
    if(waterT[i]==0)  waterT[i]=-60;
    }
    
    if(gameover==1)   background(255,0,0);
    if(gameover==2)   background(0,0,255);
    
    if(waterT[i]<0){
      for(int k=-waterS[i]+3;k<=waterS[i]-3;k++){
        fill(255);  rect((waterJ[i]+k)*50,(waterI[i])*50,50,50);
        fill(255);  rect((waterJ[i])*50,(waterI[i]+k)*50,50,50);
        if(dist(waterJ[i]+k,waterI[i], userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i],waterI[i]+k, userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i]+k,waterI[i], user2J,user2I)==0)  gameover=2;
        if(dist(waterJ[i],waterI[i]+k, user2J,user2I)==0)  gameover=2;
      }
      waterT[i]++;
    }
  }
  
}

void keyPressed(){
  if(keyCode==LEFT && map[userI][userJ-1]==0) userJ--;
  if(keyCode==RIGHT && map[userI][userJ+1]==0) userJ++;
  if(keyCode==UP && map[userI-1][userJ]==0) userI--;
  if(keyCode==DOWN && map[userI+1][userJ]==0) userI++;
  if(key=='0'){
    waterI[waterN]=userI;  waterJ[waterN]=userJ;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
  
  if(keyCode=='A' && map[user2I][user2J-1]==0) user2J--;
  if(keyCode=='D'&& map[user2I][user2J+1]==0) user2J++;
  if(keyCode=='W'&& map[user2I-1][user2J]==0) user2I--;
  if(keyCode=='S'&& map[user2I+1][user2J]==0) user2I++;
  if(key==' '){
    waterI[waterN]=user2I;  waterJ[waterN]=user2J;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }

}

沒有留言:

張貼留言