水果忍者
2020年11月16日 星期一
07161116
Week0505050505
Week05
import ddf.minim.*;
Minim minim;
AudioPlayer player1;
AudioPlayer player2;
PImage img;
float x=100, y=500, vx=3, vy= -30;
int fruitDie=0;
void setup()
{
minim = new Minim(this);
player1 = minim.loadFile("wind.wav");
player2 = minim.loadFile("swords.wav");
player1.loop();
size(500,500);
img = loadImage("fruit.png");
}
void draw()
{
background(0);
image(img, x, y, 100, 100);
x += vx;
y += vy;
vy += 0.98;
if(Y>500) fruitDie=1;
if(x<mouseX && mouseX <x+100 && y<mouseY && mouseY<y+100) fruitDie=1;
stroke(255); line(mouseX,mouseY,pmouseX,pmouseY);
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;
}
}
void mousePressed()
{
player2.rewind();
player2.play();
}
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;
}
}
這樣就寫出了一個可以遊玩的小遊戲,說實話進度比我想像的快了不少,但收穫挺多。
2020年11月14日 星期六
2020年11月2日 星期一
week05 水果忍者
水果忍者
圖片會由上往下掉落
2020年10月19日 星期一
weeeeek05
PART 1
size(500,400);
rect(100,100,200,100);
fill(255,0,0);
textSize(40);
text("Hello",100,100);
PART 2
PART 3
{0,1,1,1},
{0,1,1,1},
{2,2,2,2}};
PImage bear,tiger;
void mousePressed()
{
int i = int(mouseY/100);
int j = int(mouseX/100);
A[i][j]=0;
}
void setup()
{
size(400,400);
bear=loadImage("bear.png");
tiger=loadImage("tiger.png");
}
void draw()
{
background(0);
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(A[i][j]==1) image(bear,j*100,i*100,100,100);
if(A[i][j]==2) image(tiger,j*100,i*100,100,100);
}
}
ellipse(mouseX,mouseY,25,25);
text("mouseX:"+mouseX + "mouseY:" + mouseY,100,100);
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
2020年10月12日 星期一
week ╯ 05 ╮
week05💣💀
---
♥加入音效
速寫本->引用庫文件->添加庫文件->install sound
♥程式碼-
import processing.sound.*;
SoundFile sound1;
SoundFile sound2;
void setup(){
size(300,300);
sound1 = new SoundFile(this," ");
sound2 = new SoundFile(this," ");
//sound.play();///只能播一次
sound2.loop;///自動重複播放
}
void draw(){
}
vouid mousePressed(){
sound1.play();///按下滑鼠播放
}
---
接水果遊戲
♥程式碼-
float [] fruitX = new float[10];
float [] fruitY = new float[10];
float kidX=150,kidY=450;
int score=0;
void setup()
{
size(500,500);
for(int i=0;i<10;i++)
{
fruitX[i] = random(50,450);
fruitY[i] = -i*100;
}
}
void draw()
{
background(255);
rect(kidX,kidY,50,80);
kidX=mouseX;
for(int i=0;i<10;i++)
{
ellipse(fruitX[i],fruitY[i],60,80);
fruitY[i]++;
if(fruitY[i]>kidY)
{
if(kidX < fruitX[i] && fruitX[i] < kidX+80)
{
score+=10;
fruitY[i]=0; fruitX[i]=random(50,450);
}
else
{
fruitY[i]=0; fruitX[i]=random(50,450);
}
}
}
}
WEEK-5
Processing
水果忍者:
week05-水果忍者
![]() |
PImage img;
float x=100,y=500,vx=3,vy=-30;
int fruitDie=0;
void setup(){
size(500,500);
img = loadImage("fruit.png");
}
void draw(){
background(0);
image(img,x,y,100,100);
x += vx;
y +=vy;
vy +=0.98;
if(y>500) fruitDie=1;
if(x<mouseX&&mouseX<x+100&&y<mouseY&&mouseY<y+100){
fruitDie=1;
player2.rewind();
player2.play();
}
stroke(255);line(mouseX,mouseY,pmouseX,pmouseY);
if(fruitDie==1){
if(frameCount%2==0){
x=random(250);y=500;vx=random(2,3);vy=-random(28,32);
}else{
x=random(250);y=500;vx=random(2,3);vy=-random(28,32);
}
fruitDie=0;
}
}
week05切水果小遊戲
PImage img;
float x=100, y=500, vx=3, vy=-30; 設定位置以及加速度
int fruitDie=0;
void setup()
{
size(500,500);
img = loadImage("fruit.png");
}
void draw()
{
background(0); 設定背景消殘影
image(img ,x ,y ,100 ,100); 圖片位置及大小
x+= vx; 水平加速度
y+= vy; 垂直加速度
vy+=0.98;
if(y>500) fruitDie=1; 當水果掉下去時fruitDie=1
if(x<mouseX && mouseX<x+100 && y<mouseY && mouseY<y+100)fruitDie=1; 當滑鼠碰到水果時fruitDie=1
stroke(255);line(mouseX,mouseY,pmouseX,pmouseY); 畫線
if(fruitDie==1) 當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; fruitDie=0數值刷新將水果刷新
}
}


































