雞蛋拋拋樂
一開雞蛋在最下面的籃子,
只要按滑鼠右鍵,便能使雞蛋向上拋,
拋到籃子裡則得一分,到外面則直接結束遊戲 : D
一旦雞蛋在中間籃子準備往最上面的籃子拋時,
雞蛋進到最上面的籃子則籃子會自動往下移一格,
然後最上面產生新的籃子;
若是從中間的籃子往上拋到最上面的籃子失敗時,
則遊戲直接結束。
2, 程式碼:
import ddf.minim.*; AudioPlayer player; Minim ponyo; int score1=0, a=0, b=0, c=0, d=0, s=0; PImage Background; //背景 PImage life; //生命值小雞 PImage die; //死小雞 PImage egg; //雞蛋 PImage score; //"分數"字樣 PImage num[] = new PImage[10]; //分數數字0-9 PImage over; //籃子 PImage basket1; PImage basket2; PImage basket3; float e=random(3)+1, f=random(3)+1, g=random(3)+1; //速度 float b1X=random(420)+90, b2X=random(420)+90, b3X=random(420)+90; //籃子原X座標 float b1Y=650, b2Y=450, b3Y=250; //籃子原Y座標 float eX=285, eY=640; //雞蛋原座標 float w=0; int sw=0; void mouseClicked() { w=1; sw=1; if(eY&rt;250) eY-=200; score1+=1; } void setup() { ponyo = new Minim(this); player = ponyo.loadFile("Ponyo.mp3", 2048); player.play(); size(600, 700); Background = loadImage("background_sky.png"); life = loadImage("life.png"); die = loadImage("die.png"); score = loadImage("score.png"); for (int i=0;i<10;i++) { num[i]=loadImage(i+".png"); } egg = loadImage("egg.png"); basket1 = loadImage("basket.png"); basket2 = loadImage("basket.png"); basket3 = loadImage("basket.png"); over = loadImage("game-over.png"); } void draw() { //背景 image(Background, 0, 0, 600, 900); //雞蛋 image(egg, eX, eY, 40, 50); //籃子 image(basket1, b1X, b1Y, 90, 50); b1X+= e; if (sw==0) eX=b1X+25; if (b1X&rt;510) {b1X=510;e*=-1;} if (b1X<0) {b1X=0;e*=-1;} image(basket2, b2X, b2Y, 90, 50); b2X+= f; if (b2X&rt;510) {b2X=510;f*=-1;} if (b2X<0) {b2X=0;f*=-1;} image(basket3, b3X, b3Y, 90, 50); b3X+= g; if (b3X&rt;510) {b3X=510;g*=-1;} if (b3X<0) {b3X=0;g*=-1;} //============================== if (b1Y==450 && eX<b1X+45 && eX&rt;b1X-45 && eY<475 && eY&rt;425) { //雞蛋位置 eY=b1Y; eX=b1X+25; }else if (b2Y==450 && eX<b2X+45 && eX&rt;b2X-45 && eY<475 && eY&rt;425) { //雞蛋位置 eY=b2Y; eX=b2X+25; }else if (b3Y==450 && eX<b3X+45 && eX&rt;b3X-45 && eY<475 && eY&rt;425) { //雞蛋位置 eY=b3Y; eX=b3X+25; }else if(b1Y== 250 && eX<b1X+45 && eX&rt;b1X-45 && eY<275 && eY&rt;225){ eY=b1Y; eX=b1X+25; w=b2Y; b2Y=b1Y; b1Y=b3Y; b3Y=w; eY+=200; }else if(b2Y== 250 && eX<b2X+45 && eX&rt;b2X-45 && eY<275 && eY&rt;225){ eY=b2Y; eX=b2X+25; w=b2Y; b2Y=b1Y; b1Y=b3Y; b3Y=w; eY+=200; }else if(b3Y== 250 && eX<b3X+45 && eX&rt;b3X-45 && eY<275 && eY&rt;225){ eY=b3Y; eX=b3X+25; w=b2Y; b2Y=b1Y; b1Y=b3Y; b3Y=w; eY+=200; }else if(eY==640){ eY=640; }else if(eY==b1Y && eX<b1X-25 || eX&rt;b1X+25){ for(int i=0;i<500;i++)eY--; image(over, 0, 0, 600, 700); /*for(int j=0;j<2;j++){ if(score1&rt;0)score1-=1; }*/ }else if(eY==b2Y && eX<b2X-25 || eX&rt;b2X+25){ for(int i=0;i<500;i++)eY--; image(over, 0, 0, 600, 700); /*for(int j=0;j<2;j++){ if(score1&rt;0)score1-=1; }*/ }else if(eY==b3Y && eX<b3X-25 || eX&rt;b3X+25){ for(int i=0;i<500;i++)eY--; image(over, 0, 0, 600, 700); /*for(int j=0;j<2;j++){ if(score1&rt;0)score1-=1; }*/ } //生命值(小雞) //image(life, 0, 30, 70, 50); //image(life, 80, 30, 70, 50); //image(life, 160, 30, 70, 50); //分數 image(score, 350, 30, 100, 50); image(num[score1/1000], 455, 30, 30, 50); image(num[score1/100%10], 485, 30, 30, 50); image(num[score1/10%10], 515, 30, 30, 50); image(num[score1%10], 545, 30, 30, 50); }
3, 圖片展示:
4, 影片展示:
5, 問題檢討和心得感想:
問題 ↓
最一開始碰到的問題是,要怎麼讓雞蛋往上拋,且有正常的動畫效果,後來的問題則是該如何使不同的籃子從不同的起始點開始移動,並且每個籃子都做不同的速度移動,好不容易都解決了,卻發現無法使籃子和雞蛋同時往下移以產生新的籃子,在這部分卡關了好久,最後終於想到解決辦法,但是雞蛋卻無法做動畫,很傷心 :(
改進 ↓
希望可以把雞蛋的動畫做好,然後關於計分的地方可以再作好一點,並且讓"生命值小雞"可以記錄,如此便能使每個玩家有三條命,不會一個不小心遊戲就結束了。
另外希望畫面可以在精緻豐富一些,例如在最一開始設計一個進入和可以選擇的介面,然後遊戲中的背景音樂能隨分數的增加而改變,也希望可以隨分數的增加來提高遊戲的難易度,最後希望結束畫面再漂亮一點~
心得 ↓
這個作業讓大家都好緊張,然後碰到困難就很慌亂,幸好有同學、學長姐和老師的幫助,才讓我們得以繼續下去,真的很感謝。
和小隊員一起完成一件作品的感覺好棒,過程中也好好玩,雖然目前沒有達到剛開始所設立的目標,但是我相信我們可以的 : D
然後發現任何事情真的都是要花時間和心力去完成,不可能有花少少時間就得到成效的事情。下次會再努力,並且提早時間開始準備!
謝謝大家:D
沒有留言:
張貼留言