最後完成了作業
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的用法
沒有留言:
張貼留言