2020年11月16日 星期一

week05 鄭皓文

                這星期我們要學如何做出類似水果忍者的遊戲,我也終於回到學校上課了,沒想到這麼快就可以製作出可以實際遊玩的遊戲,那麼接下來進入實作階段。

第一步比較簡單,先讓水果可以顯示,並加上我們上星期寫過的物理效果,背景要更改,否則會留下拖影,效果如圖:

這樣就可以看到一個香蕉在螢幕上四處蹦躂

程式碼如下

PImage img;

float x=100, y=500, vx=3,vy=-30;

void setup()

{

  size(500,500);

  img=loadImage("fruit.png");

}

void draw()

{

  clear();

  image(img,x,y,100,100);

  x+=vx;

  y+=vy;

  vy+=0.98;

  if(y>500)

  {

    x=random(400); y=500; vx=random(-5,5); vy=-30;

  }

}

做完這一步就可以加上刀切效果了,切中了之後水果消失,然後再隨機生成一個新的水果,效果如下:










      雖然圖上看不出來就是了,下面我們為它添加上音效,畢竟水果忍者這個遊戲沒有音效爽快感直接減半

在這裡添加sound函式庫就有音效了 

最後添加上音效的程式碼如下:

import processing.sound.*;

SoundFile sound1;

SoundFile sound2;

SoundFile sound3;

SoundFile sound4;

PImage img;

float x=100, y=500, vx=3,vy=-30;

int fruitDie=0;

int point=0;

int mouseMove=0;

void setup()

{

  size(500,500);

  sound1= new SoundFile(this, "blade-ink-2.wav");

  sound2= new SoundFile(this, "Bonus-Explosion-1.wav");

  sound3= new SoundFile(this, "Bonus-Explosion-3.wav");

  sound4= new SoundFile(this, "Bonus-Explosion-5.wav");

  img=loadImage("fruit.png");

}

void draw()

{

  clear();

  image(img,x,y,100,100);

  x+=vx;

  y+=vy;

  point++;

  vy+=0.98;

  if(y>500) fruitDie=1;

if(x<mouseX&&mouseX<x+100&&y<mouseY&&mouseY<y+100 && mouseMove==1)

  {

    sound1.play();

    fruitDie=1;

    if(point<10) sound4.play();

    else if(point<20) sound3.play();

    else if(point<30)sound2.play();

  }

  stroke(255); line(mouseX,mouseY,pmouseX,pmouseY);

  if(mouseX==pmouseX && mouseY==pmouseY) mouseMove=0;

  else mouseMove=1;

  if(fruitDie==1)

  {

    x=random(400); y=500; vx=random(-5,5); vy=-30;

    fruitDie=0;

    point=0;

  }

}

    這樣就寫出了一個可以遊玩的小遊戲,說實話進度比我想像的快了不少,但收穫挺多。




沒有留言:

張貼留言