2018年11月1日 星期四

QAQ筆記 WEEK08

期中作業_炸彈超人

Week 8 期中作品分享

組員 : 05160806陳怡瑄,05160486武煜川

作品名稱 : 炸彈超人(Morty版)

作品連結 : https://youtu.be/w-F68enBSN8

遊戲玩法 : 用上下左右鍵控制右下角的Player,用WSAD鍵控制左上角的Player



程式碼如下:
import ddf.minim.*;
Minim minim;
AudioPlayer player;
PImage imgA, imgB, imgBG;
PImage imgBomb, imgRock, imgBombBG;
int [][]grid=new int[100][100];
void setup(){
  size(800, 640);
  minim = new Minim(this);
  player = minim.loadFile("sd.mp3");
  player.loop();
  imgBG = loadImage("bg.jpg");
  imgA = loadImage("player22.png");
  imgB = loadImage("player1.png");
  imgBomb = loadImage("bomb.png");
  imgRock = loadImage("rock.png");
  imgBombBG = loadImage("bombbg.jpg");
  grid[0][0]=3; grid[9][7]=4;
  grid[1][0]=3; grid[9][6]=4;
  grid[0][1]=3; grid[8][7]=4;
  for(int i=0;i<35;i++){
    int a=int(random(10)), b=int(random(10));
    while(grid[a][b]!=0){
      a=int(random(10)); b=int(random(10));
    }
     grid[a][b]=2;
     if(a==bombA[i] && b==bombB[i] || a==bombA[i]+1 && b==bombB[i] || a==bombA[i]-1 && b==bombB[i] || a==bombA[i] && b==bombB[i]+1 || a==bombA[i] && b==bombB[i]-1){
       grid[a][b]=0;
     }
  }
  grid[0][0]=0; grid[9][7]=0;
  grid[1][0]=0; grid[9][6]=0;
  grid[0][1]=0; grid[8][7]=0;
}

boolean boom=false;
int userA=9, userB=7;
int userC=0, userD=0;
int bombN=0;
int []bombA=new int[100];
int []bombB=new int[100];
int []bombS=new int[100];
int []bombT=new int[100];

void draw(){
  noStroke();
  image(imgBG,0,0,width,height);
  image(imgA,userA*80-20,userB*80-10,120,100);
  image(imgB,userC*80-5,userD*80-5,90,90);

  for(int i=0;i<bombN;i++){
    int a=bombA[i] , b=bombB[i];
    if(bombT[i]>0){
      grid[a][b]=1;
      image(imgBomb,bombA[i]*80+5, bombB[i]*80, 80, 80);
      bombT[i]--;
      if(bombT[i]==0)  bombT[i]=-30;
    }
    if(bombT[i]<0){
      for(int k=-bombS[i];k<=bombS[i];k++){
        image(imgBombBG,(bombA[i]+k)*80, (bombB[i])*80, 80, 80);
        image(imgBombBG,(bombA[i])*80, (bombB[i]+k)*80, 80, 80);
        grid[a][b]=0;
        if(grid[a+1][b]!=0){grid[a+1][b]=0;}
        if(a-1>=0){if(grid[a-1][b]!=0)grid[a-1][b]=0;}
        if(grid[a][b+1]!=0){grid[a][b+1]=0;}
        if(b-1>=0){if(grid[a][b-1]!=0)grid[a][b-1]=0;}

     
        if(userA==bombA[i] && userB==bombB[i] || userA==bombA[i]+1 && userB==bombB[i] || userA==bombA[i]-1 && userB==bombB[i] || userA==bombA[i] && userB==bombB[i]+1 || userA==bombA[i] && userB==bombB[i]-1)
        {boom=true;}
        if(userC==bombA[i] && userD==bombB[i] || userC==bombA[i]+1 && userD==bombB[i] || userC==bombA[i]-1 && userD==bombB[i] || userC==bombA[i] && userD==bombB[i]+1 || userC==bombA[i] && userD==bombB[i]-1)
        {boom=true;}
        if(userA==bombA[i] && userB==bombB[i] || userA==bombA[i]+1 && userB==bombB[i] || userA==bombA[i]-1 && userB==bombB[i] || userA==bombA[i] && userB==bombB[i]+1 || userA==bombA[i] && userB==bombB[i]-1){ userA=-3; userB=-3;}
        if(userC==bombA[i] && userD==bombB[i] || userC==bombA[i]+1 && userD==bombB[i] || userC==bombA[i]-1 && userD==bombB[i] || userC==bombA[i] && userD==bombB[i]+1 || userC==bombA[i] && userD==bombB[i]-1){ userC=-3; userD=-3;}
     
      }
      bombT[i]++;
    }
  }

  for(int x=0;x<10;x++){
    for(int y=0;y<8;y++){
      if(grid[x][y]==2) image(imgRock,x*80, y*80, 80, 80);
    }
  }

  if(boom){
    textSize(100);
    fill(#FF4800); text("GameOver", 150,200);
  }
}

void keyPressed(){
  if(keyCode==LEFT && userA-1>=0 && grid[userA-1][userB]==0) userA--;
  if(keyCode==RIGHT && userA+1<=9 && grid[userA+1][userB]==0) userA++;
  if(keyCode==UP && userB-1>=0 && grid[userA][userB-1]==0) userB--;
  if(keyCode==DOWN && userB+1<=7 && grid[userA][userB+1]==0) userB++;
  if(keyCode==' '){
    bombA[bombN]=userA;  bombB[bombN]=userB;
    bombS[bombN]=1;  bombT[bombN]=30;
    bombN++;
  }

  if(keyCode=='A' && userC-1>=0 && grid[userC-1][userD]==0) userC--;
  if(keyCode=='D' && userC+1<=9 && grid[userC+1][userD]==0) userC++;
  if(keyCode=='W' && userD-1>=0 && grid[userC][userD-1]==0) userD--;
  if(keyCode=='S' && userD+1<=7 && grid[userC][userD+1]==0) userD++;
  if(keyCode=='Z'){
    bombA[bombN]=userC;  bombB[bombN]=userD;
    bombS[bombN]=1;  bombT[bombN]=30;
    bombN++;
  }
 
}

沒有留言:

張貼留言