2020年10月13日 星期二

𝔍𝔒𝔗𝔇-week5

今日進度:

總目標:做出水果忍者

小目標:

1.設定畫面

2.設定拋物線

3.加入刀子及切水果的功能

4.建立聲音和放入

進階:

加入計分器

                                               ↑設定畫面和插入圖片
                                             ↑實際遊玩影片(沒聲音)

                                             ↑實際遊玩影片(有聲音)

程式:

import ddf.minim.*; //引入聲音的函式

Minim minim;

AudioPlayer player1; //定義音檔1

AudioPlayer player2;//定義音檔2

PImage img;

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

int fruitDie=0;

void setup()

{

  size(500,500);

  img = loadImage("fruit.png");

  minim = new Minim(this);

  player1 = minim.loadFile("zapsplat_warfare_knife_metal_blade_edge_scrape_wood_008_48474.mp3"); 

  player2 = minim.loadFile("2019-06-17_-_Super_Spiffy_-_David_Fesliyan.mp3");

  player2.loop();

}

void draw()

{

  background(255);

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

  x+=vx;

  y+=vy;

  vy+=0.98;

  if(x<mouseX && mouseX<x+100 && y<mouseY && mouseY<y+100) //當滑鼠切到水果時執行下列動作

  {

    fruitDie=1;

    player1.rewind();

    player1.play();

  }

  stroke(0);line(mouseX,mouseY,pmouseX,pmouseY); //設定滑鼠畫出的刀痕

  if(y>500) //如果超過畫面,水果重生

  {

    fruitDie=1;

  }

  if(fruitDie==1) //如果水果死亡,會隨機重生高度跟起始位置

  {

    if(frameCount%2==0)

    {

      x=random(250);y=500;vx=random(2,3);vy=-random(28,32);

    }

    else

    {

      x=random(250,500);y=500;vx=-random(2,3);vy=-random(28,32);

    }

    fruitDie=0;

  }

  

  

}

                                            ↑實際遊玩影片(有聲音和計分器)
進階程式:

import ddf.minim.*; //引用音檔函式

Minim minim;

AudioPlayer player1;

AudioPlayer player2;

PImage img;

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

int fruitDie=0,point=0;

PFont f; //定義字體及大小

void setup()

{

  size(500,500);

  img = loadImage("fruit.png"); //插入水果圖片

  minim = new Minim(this);

  player1 = minim.loadFile("zapsplat_warfare_knife_metal_blade_edge_scrape_wood_008_48474.mp3"); 

  player2 = minim.loadFile("2019-06-17_-_Super_Spiffy_-_David_Fesliyan.mp3");

  player2.loop();

  f=createFont("Arial", 20, true); //設定字體及大小

}

void draw()

{

  background(255);

  textFont(f,16);

  fill(0);

  text("Point:",0,20); //印出計分器的位置及大小

  text(point,50,20);//印出分數

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

  x+=vx;

  y+=vy;

  vy+=0.98;

  if(x<mouseX && mouseX<x+100 && y<mouseY && mouseY<y+100) //如果滑鼠切到水果加一分並讓水果重生

  {

    fruitDie=1;

    player1.rewind();

    player1.play();

    point+=1;

  }

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

  if(y>500)

  {

    fruitDie=1;

  }

  if(fruitDie==1)//當水果重生會隨機生成位置

  {

    if(frameCount%2==0)

    {

      x=random(250);y=500;vx=random(2,3);vy=-random(28,32);

    }

    else

    {

      x=random(250,500);y=500;vx=-random(2,3);vy=-random(28,32);

    }

    fruitDie=0;

  }

  

  

}

https://youtu.be/LF8-ACcTiHA

https://youtu.be/fDWcevJdXF8

https://youtu.be/cH1i_NtZkUQ

沒有留言:

張貼留言