☂Week19☂
[1/17(一)]
今日是final day!!!
要來跟大家展示我的Doodle Jump💪
在19週展示前,最後加入了(1)背景音、(2)計時器、(3)失敗畫面
讓我們繼續看下去吧 吧 吧
(1)背景音
雖然doodle jump這款遊戲原本就無背景音,但為了玩起來更有氣氛,還是決定加了一首輕快又符合此遊戲的bgm! 希望大家覺得這個音樂有搭配到這個遊戲。
(2)計時器
利用以前上課學的,做了一個計時器,但最後很可惜,來不及把最後計下來的時間放到失敗畫面。最後有設計一個比較特別的,就是計時器<500時,就算掉落到起始線,也不會死! 但計時器>500後再掉落,就Game Over了!
(3)失敗畫面
//Doodle Jump製作步驟: (1)jumping主角 (2)跳起來 (3)卡住 (4)畫面捲動
PImage imgBoard01,imgBack,img3;
import ddf.minim.*;//音樂
Minim minim;
AudioPlayer player;
float x=150, y=450, vx=0, vy=0;
boolean jumping=false;
boolean left=false;//左
boolean right=false;//右
boolean alive=true;
float []boardX=new float[11];
float []boardY=new float[11];
int landing=0;//停在哪一個板子上
int second=0;
void setup()
{
size(300,500);
fill(#F2D738);
textSize(45);
imgBoard01 = loadImage("board01.png");
imgBack = loadImage("background.png");
img3 = loadImage("die.png");
for(int i=0; i<11; i++)
{
boardX[i]=random(0,300-67);
boardY[i]=i*45;
}
minim = new Minim(this);//加音樂
player = minim.loadFile("music.mp3");
player.play();
}
float rolling=0;
void draw()
{
image(imgBack,0,0,300,500);
///background(255);
text("Time:"+frameCount, 40,80);
second=frameCount;
for(int i=0; i<11; i++)
{
if(boardY[i]+rolling>500){
boardY[i]-=495;
boardX[i]=random(0,300-67);
}
//rect(boardX[i],boardY[i], 80, 15); //最原本
//rect(boardX[i],450-boardY[i]+rolling, 64, 18);//改過(但板子會有邊角)
image(imgBoard01, boardX[i], boardY[i]+rolling);//再改(板子沒有邊角了,成功)
//if(boardY[i]+rolling<0)
//{
//boardX[i]=random(0,300-67);
//boardY[i]=boardY[i]+350;
//}
}
ellipse(x,y,15,15);
if(left) x -= 0.8;
if(right) x += 0.8;
//x += vx;
if(x< boardX[landing] || boardX[landing]+67<x) jumping=true;//landing=i;//停在哪一個板子上, 超過了,掉下來
if(x < 0) x+=300;//超過左邊界,從右邊界回來
if(x > 300) x-=300;//超過右邊界,從左邊界回來
y += vy;
if(jumping) vy += 0.98;//重力加速度(往下的速度)
if(y>500-18) y=500-18;//地板
if(vy>=0)
{//(0)往下,才有可能卡住
for(int i=0; i<11; i++)
{
if(boardX[i] < x && x < boardX[i]+67)//(1)x: 板子的左右邊界符合(主角在板子裡)
{
if(y< boardY[i]+rolling && y+vy > boardY[i]+rolling)//(2)y: 上下符合,從板子上,往板子下穿越
{
landing=i;
jumping=false;
vy=0;
y = boardY[i]+rolling;//boardY[i];
}
}
}
}
///for(int i=0; i<10; i++)
{
//image(imgBoard01, boardX[i], 450-boardY[i]+rolling);
}
//rolling+=1.5;
if(y<250){
float diff=250-y;
rolling += diff;
y = 250;
}
if(second>500)//前面時間<500不會死,超過500,且掉到起始線才死!!
{
if(y+vy>495)
{
alive=false;
}
}
if(alive==false)
{
image(img3,0,0,width,height);
}
}
void keyPressed()
{
if(keyCode==UP)
{//(2)跳起來
vy = -20; jumping=true; //往上的速度,負的越多,跳的越慢
}
if(keyCode==LEFT)
{
vx = -0.8; left=true; right=false; //負越多,跑越快
}
if(keyCode==RIGHT)
{
vx = 0.8; right=true; left=false;
}
}
💛期末檢討&心得:
因為時間沒安排好,所以有些東西沒做出來,很可惜! 比如:
1.主角的圖有找到,但圖代替黃球後,整個座標就跑掉了,來不及找問題,所以我才繼續用黃球。
2.計時器最後累積的時間無法顯示在失敗畫面,無法知道自己在此遊戲撐了多久。
3.失敗後,沒有可以重新回到遊戲的按鈕。
這學期很感謝老師的教學,特別是期末遊戲作業,真的幫忙好多😭,太感謝老師耐心的教導了,一開始真的覺得好困難,後來就慢慢做出小遊戲了,自己也有學到東西,很有成就感!!!
沒有留言:
張貼留言