2022年1月17日 星期一

作業完成

 最後完成了作業

import processing.sound.*;

SoundFile soundfile1;

SoundFile soundfile2;

float [] bulletX=new float[99];

float [] bulletY=new float[99];

float [] bulletVX=new float[99];

float [] bulletVY=new float[99];

boolean die =false;

float x1=150,y1=400;

PImage imgBrick;

PImage imgBrick2;

PImage imgBullet;

PImage imgPlayer;

PImage imgBackground;

PImage imgC;

PImage imgGameover;


void setup(){

  size(300,500);

  soundfile1 = new SoundFile(this,"AnyConv.com__Pokemon.aiff");

  soundfile2 = new SoundFile(this,"wind03.aiff");

  soundfile1.play();

  soundfile1.loop();

  soundfile2.stop();

  imgBrick=loadImage("brick.jpg");

  imgBrick2=loadImage("2.jpg");

  imgBullet=loadImage("bullet.png");

  imgPlayer=loadImage("player.png");

  imgBackground=loadImage("111.png");

  imgC=loadImage("blo.jpg");

  imgGameover=loadImage("gameover.png");

  

  for(int i=0; i<99; i++){

    bulletX[i]=random(300); bulletY[i]=0; 

    //bulletX[i] = random(300);

    //bulletY[i] = random(300);

    float angle = random(60,120);//360度

    bulletVX[i] = cos( radians(angle) ); //random(-3,3);//子彈的速度差太多了, 不好

    bulletVY[i] = sin( radians(angle) );//random(-3,3);

  }

}

void draw(){

  image(imgBackground,20,30);

  image(imgC,0,0,300,35);//上面的白條

  for(int i=0;i<30;i++){//兩邊的槓槓

    image(imgBrick,0,0+i*15);

    image(imgBrick2,280,0+i*15);

  }

  for(int i=0; i<30; i++){

    image(imgBullet,bulletX[i], bulletY[i], 8, 8);

    bulletX[i] += bulletVX[i];

    bulletY[i] += bulletVY[i];

    if(bulletX[i]<25 || bulletY[i]<0 || bulletX[i]>275 || bulletY[i]>500){

      //bulletX[i] = random(300);//重新出現的子彈,不應該突然出現

      //bulletY[i] = random(300);//應該是從邊邊冒出來

        bulletX[i]=random(300); bulletY[i]=40; 

      float angle = random(60,120);//360度

      bulletVX[i] = cos( radians(angle) ); //random(-3,3);//子彈的速度差太多了, 不好

      bulletVY[i] = sin( radians(angle) );//random(-3,3);  

    }

    if(dist (x1,y1,bulletX[i],bulletY[i])<6){

        die=true;

    }

   if(die){

     image(imgGameover,0,0,300,500);

     soundfile1.stop();

     }

   else{

     image(imgPlayer,x1,y1,20,30);

     x1=mouseX-10;

     y1=mouseY-15;

   }

  }

}


整個程式花最多時間的地方應該是碰撞的部分

因為一開始講解碰撞的程式在自己嘗試的時候一職失敗

最後問老師的時候才知道了另外一種做法

  if(dist (x1,y1,bulletX[i],bulletY[i])<6)

學到了dist的用法

沒有留言:

張貼留言