01160873_林瑋真
import ddf.minim.*;
Minim minim;
AudioPlayer cha,crow,scr,pl;
PImage imgman;
PImage imgbird;
PImage imgbg;
PImage imgred;
PImage imgdead;
float angle=0, manX=131, manY=464, vel=1, dX=0, dY=0;
float bird1X[] = new float [1000];
float bird1Y[] = new float [1000];
float bird2X[] = new float [1000];
float bird2Y[] = new float [1000];
int barrier[] = new int [1000];
int manH=226, manW=143;
int touch=10;
float a=manW/2;
void setup() {
size(262, 464, P3D);
imgbg=loadImage("BG.png");
imgman=loadImage("man.png");
imgbird=loadImage("bird.png");
imgred=loadImage("red.png");
imgdead=loadImage("dead.png");
minim = new Minim(this);
cha = minim.loadFile("ChaCha.mp3");
crow = minim.loadFile("crow.mp3");
scr = minim.loadFile("scr.mp3");
pl = minim.loadFile("pl.mp3");
for (int i=0; i<100; i++) {
barrier[i] = int (random(0, 4));
}
for (int i=1; i<100; i++) {
bird1X[i] = int (random(30, 50));
bird1Y[i] = -10 * int (random(1, 1000));
bird2X[i] = int (random(212, 232));
bird2Y[i] = -10 * int (random(1, 1000));
}
cha.rewind();
cha.play();
imageMode(CENTER);
}
int toSmaller=0;
int toBigger=0;
void draw() {
background(imgbg);
imageMode(CENTER);
pushMatrix();
translate(manX, manY);
rotateZ(angle);
image(imgman, 0, -30, manH, manW);
popMatrix();
dX-=vel*cos(angle);
dY-=vel*sin(angle);
for (int i=0; i<100; i++) {
if (barrier[i]==1)
{
image(imgbird, bird1X[i], bird1Y[i]+=1, 40, 40);
if(angle<1/1.8 && angle>1/2 )
{
a/=16;
}
if(angle<1/1.5 && angle>1/1.8 )
{
a/=2;
}
if(bird1X[i]+30>=manX-a && bird1Y[i]+20>=manY-60 && bird1Y[i]+20<=manY-58)
{
print("birdtouch1");
crow.rewind();
crow.play();
touch-=1;
bird1X[i]=-100;
bird1Y[i]=-100;
}
}
if (barrier[i]==2)
{
image(imgbird, bird2X[i], bird2Y[i]+=1, 40, 40);
if(angle<-1/1.8 && angle>-1/2 )
{
a/=10;
}
if(angle<-1/1.5 && angle>-1/1.8 )
{
a/=2;
}
if(bird2X[i]-20<=manX+a && bird2Y[i]+20>=manY-60 && bird2Y[i]+20<=manY-58)
{
print("birdtouch2");
crow.rewind();
crow.play();
touch-=1;
bird2X[i]=10000;
bird2Y[i]=10000;
}
}
a=manW/2;
textSize(20);
fill(0, 0, 160);
text("LIFE="+touch,160,25);
if(manY<=50)
{
cha.close();
background(0, 0, 0);
textSize(40);
fill(250, 150, 0);
text("YOU WIN",40,200);
pl.rewind();
pl.play();
noLoop();
}
if(touch<=0)
{
dead();
}
}
if (toSmaller>0) {
toSmaller--;
manH-=1;
manW-=1;
}
if(toSmaller==1)
{
for(int i=1;i<80;i++)
{
manH+=1;
manW+=1;
}
}
}
void keyPressed() {
switch(keyCode) {
case RIGHT :
angle+=1/100.0;
break;
case LEFT :
angle-=1/100.0;
break;
case DOWN :
toSmaller=80;
break;
}
if (angle>=1/1.5||angle<=-1/1.5)
{
print("DEAD");
dead();
}
if (angle>=1/25||angle<=-1/25)
manY-=0.5;
}
void dead()
{
cha.close();
background(0, 0, 0);
textSize(40);
fill(250, 150, 0);
text("GAME OVER",15,160);
image(imgdead, 150, 320);
scr.rewind();
scr.play();
noLoop();
}
進度
1. 碰到左邊的鳥與右邊的鳥,鳥會消失並且LEFRT-1
touch-=1;
遇到問題:如果人旋轉角度或變小,還是碰的到鳥。我們覺
得應該是因為本身的圖片雖縮
小但它本身的範圍並未改變。
解決方法:
以 float a=manW/2;當基準,只要縮小就讓寬度減 a ex: manX-a
如果人旋轉,一人旋轉角度來判斷減 a/=10; 或減 a/=2;
if(angle<-1/1.8 && angle>-1/2 )
{
a/=10;
}
if(angle<-1/1.5 && angle>-1/1.8 )
{
a/=2;
}
2.加入遊戲音樂、win的音樂、game over的音樂、碰到鳥的
音效
import ddf.minim.*;
Minim minim;
AudioPlayer cha,crow,scr,pl;
minim = new Minim(this);
cha = minim.loadFile("ChaCha.mp3");
crow = minim.loadFile("crow.mp3");
scr = minim.loadFile("scr.mp3");
pl = minim.loadFile("pl.mp3");
crow.rewind();
crow.play();
3. win 的場景、game over 的場景
人圖片的範圍碰到遊戲畫面 Y<=50 時就贏了~
if(manY<=50)
{
cha.close();
background(0, 0, 0);
textSize(40);
fill(250, 150, 0);
text("YOU WIN",40,200);
pl.rewind();
pl.play();
noLoop();
}
我們是用函式,只要符合書的條件就呼叫函式
void dead()
{
cha.close();
background(0, 0, 0);
textSize(40);
fill(250, 150, 0);
text("GAME OVER",15,160);
image(imgdead, 150, 320);
scr.rewind();
scr.play();
noLoop();
}
FINISH =)
沒有留言:
張貼留言