目前的成果展示
1.封面
=>有透過resize的方式讓圖片跟隨頁面變化
2.加入音樂-在按封面頁的start後跳轉進遊戲頁面
(飛機是主角,上面是怪獸)
3.遊戲方法
-鍵盤的上下左右鍵是操控飛機
-空白鍵射出子彈(紅色)
4.視窗跳轉
-打贏時跳出YOU WIN的字樣
##目前程式碼
```
//射擊遊戲: 子彈
//飛機大戰 泡泡龍消消樂 泡泡射手 彈幕的遊戲 猫狗大戰
//Step01: 主角(keyboard)
//Step02: 子彈(自己移動)
//Step02-2: 子彈碰到敵人, 子彈消失, 敵人消失
//Step03: 很多子彈 很多離人'
import processing.sound.*;
SoundFile sound1;
PImage imgBG;//背景
PImage imgC;//封面
PImage imgMS1;//怪獸一
PImage imgMS2;//怪獸二
PImage boss;//大boss
PImage plane;//飛機
int stage=1;//開頭
void setup() {
size(500, 500);
imgC=loadImage("cover.png");
imgBG=loadImage("background.jpg");
imgMS1=loadImage("monster1.png");
imgMS2=loadImage("monster2.png");
boss=loadImage("boss.png");
plane = loadImage("airplane.png");
imgBG.resize(width, height);
sound1=new SoundFile(this,"SW2.mp3");
}
int userX=250, userY=400, userVX=0, userVY=0;
int []bulletX=new int[1000];//更多子彈,就大一點
int []bulletY=new int[1000];
int []bulletVX=new int[1000];
int []bulletVY=new int[1000];
;
boolean []bulletFlying=new boolean[1000];
int bulletN=0;
int []enemyX={25, 125, 225, 325, 425};
int []enemyY={80, 80, 80, 80, 80};
int []enemyLife={3, 3, 3, 3, 3};
void draw() {
if(stage==3){
background(imgBG);
textSize(40);
text("YOU WIN!",190,240);
}
if (stage==1) {
background(imgC);
textSize(30);
fill(#FFFFF2);
rect(225, 225, 80, 30);
fill(0,0,0);
text("START", 225, 250);
imgC.resize(width, height);
}
if (stage==2) {
println(bulletN);
background(imgBG);
for (int k=0; k<5; k++) {//k敵人
if (enemyLife[k]>0) {
fill(0, 255, 0);
//rect(enemyX[k], enemyY[k], 50,10);血條
image(imgMS1, enemyX[k], enemyY[k], 80, 80);//怪獸本身
}
if(enemyLife[0]<=0 && enemyLife[1]<=0 &&enemyLife[2]<=0&&enemyLife[3]<=0&&enemyLife[4]<=0)
stage=3;
}
fill(255, 255, 0);
ellipse(userX, userY, 8, 8);
image(plane, userX-40, userY-40, 80, 80);//主角飛機
userX += userVX;//人物動起來
userY += userVY;//人物動起來
for (int i=0; i<bulletN; i++) {
if (bulletFlying[i]) {
bulletX[i] += bulletVX[i];
bulletY[i] += bulletVY[i];
if ( bulletY[i]<0) recycleBullet(i);///當子彈i超過範圍, 回收再利用
fill(255, 0, 0);
ellipse( bulletX[i], bulletY[i], 6, 6);
for (int k=0; k<5; k++) {
if ( enemyLife[k]>0 && enemyX[k] <= bulletX[i] && bulletX[i] <= enemyX[k] + 75 && enemyY[k] <= bulletY[i] && bulletY[i] <= enemyY[k] + 75) {
bulletFlying[i]=false;
recycleBullet(i);///當子彈i超過範圍, 回收再利用
enemyLife[k]--;
}
}
}
}
}
}
void recycleBullet(int i) {//i子彈
for (int k=i; k<1000-1; k++) {
bulletX[k] = bulletX[k+1];//右邊移動過來
bulletY[k] = bulletY[k+1];
bulletVX[k] = bulletVX[k+1];
bulletVY[k] = bulletVY[k+1];
bulletFlying[k] = bulletFlying[k+1];
}
bulletN--;
}
void keyPressed() {
if (keyCode==RIGHT) userVX=2;
if (keyCode==LEFT) userVX=-2;
if (keyCode==UP) userVY=-2;
if (keyCode==DOWN) userVY=2;
if (key==' ') {
//println("add one");
bulletN++;
bulletFlying[bulletN-1]=true;
bulletX[bulletN-1]=userX;
bulletY[bulletN-1]=userY;
bulletVY[bulletN-1] = -1;//往上射
}
}
void keyReleased() {//放開就不會動了
if (keyCode==RIGHT) userVX=0;
if (keyCode==LEFT) userVX=0;
if (keyCode==UP) userVY=0;
if (keyCode==DOWN) userVY=0;
}
void mousePressed() {
if(mouseX>=225&&mouseX<=305&&mouseY>=210&&mouseY<=240){
if (stage==1)stage=2;
sound1.play();
}
}
```

沒有留言:
張貼留言