做出憤怒鳥多隻怪物
PImage img0,img1;void setup(){
size(800,600);
img0 = loadImage("Mario.png");
img1 = loadImage("Mario1.png");
imageMode(CENTER);
for(int i=0;i<5;i++) //改成for迴圈一次製作多隻
{
for(int j=0;j<4;j++)
{
mar1x[i][j]=700-i*100;
mar1y[i][j]=100+j*100;
img1Alive[i][j]=true;
}
}
}
float marx=400, mary=300;
float marvx=0, marvy=0;
float marax=0, maray=0;
float [][]mar1x = new float[5][4]; //把要用成多隻的怪物位置用陣列表示
float [][]mar1y = new float[5][4];
boolean [][]img1Alive = new boolean[5][4];
void draw(){
background(255);
image(img0,marx,mary,100,100);
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
{
if (dist(mar1x[i][j],mar1y[i][j],marx,mary)<100)
{
img1Alive[i][j]=false;
}
if (img1Alive[i][j]) image(img1,mar1x[i][j],mar1y[i][j],100,100);
}
}
marx +=marvx;
mary +=marvy;
if(marx<50){marx=50;marvx=-marvx;}
if(marx>width-50){marx=width-50;marvx=-marvx;}
if(mary<50){mary=50;marvy=-marvy;}
if(mary>height-50){mary=height-50;marvy=-marvy;}
marvx += marax;
marvy += maray;
marvx *=0.995;
marvy *=0.995;
}
void mouseDragged()
{
marx=mouseX; mary=mouseY;
marvx=marvy=marax=maray=0;
}
void mouseReleased()
{
marvx = (400-mouseX)/10.0;
marvy = (400-mouseY)/10.0;
maray= 0.98;
}
簡化版 做出20個形狀
float [][]pigx = new float[5][4];float [][]pigy = new float[5][4];
boolean [][]pigAlive= new boolean[5][4];
void setup()
{
size(800,600);
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
{
pigx[i][j]=700-i*100;
pigy[i][j]=100+j*100;
pigAlive[i][j]=true;
}
}
}
void draw()
{
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
{
fill(#07DE0F); ellipse(pigx[i][j],pigy[i][j],100,100);
}
}
fill(#DE0719); ellipse(400,300,100,100);
}
先寫好牛頓第一、第二運動定律 讓pig碰到bird時 bird消失
float birdX = 100, birdY = 400;float [][]pigx = new float[5][4];
float [][]pigy = new float[5][4];
boolean [][]pigAlive= new boolean[5][4];
float birdVX=0, birdVY=0;
float birdAX=0, birdAY=0;
void setup()
{
size(800,600);
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
{
pigx[i][j]=700-i*100;
pigy[i][j]=100+j*100;
pigAlive[i][j]=true;
}
}
}
void draw()
{
background(255);
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
{
if(dist(birdX,birdY,pigx[i][j],pigy[i][j])<100)
pigAlive[i][j]=false;
if(pigAlive[i][j])
{
fill(#07DE0F); ellipse(pigx[i][j],pigy[i][j],100,100);
}
}
}
fill(#DE0719); ellipse(birdX,birdY,100,100);
birdX += birdVX; birdY +=birdVY;
birdVX += birdAX; birdVY += birdAY;
}
void mouseDragged()
{
birdX=mouseX;
birdY=mouseY;
}
增加拋物線 加速度與移動速度 重量
float birdX = 100, birdY = 400;
float [][]pigx = new float[5][4];
float [][]pigy = new float[5][4];
boolean [][]pigAlive= new boolean[5][4];
float birdVX=0, birdVY=0;
float birdAX=0, birdAY=0;
void setup()
{
size(800,600);
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
{
pigx[i][j]=700-i*100;
pigy[i][j]=100+j*100;
pigAlive[i][j]=true;
}
}
}
void draw()
{
background(255);
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
{
if(dist(birdX,birdY,pigx[i][j],pigy[i][j])<100)
pigAlive[i][j]=false;
if(pigAlive[i][j])
{
fill(#07DE0F); ellipse(pigx[i][j],pigy[i][j],100,100);
}
}
}
fill(#DE0719); ellipse(birdX,birdY,100,100);
birdX += birdVX; birdY +=birdVY;
birdVX += birdAX; birdVY += birdAY;
}
void mouseDragged()
{
birdX=mouseX;
birdY=mouseY;
birdVX=0; birdVY=0; //讓拖曳時沒有速度
birdAX=0; birdAY=0; ////讓拖曳時沒有加速度(不會在拖的時候下墜)
}
void mouseReleased()
{
birdVX=(100-mouseX)/5.0;
birdVY=(400-mouseY)/5.0;
birdAY=0.98;
}
加入音樂
sketch - import library -add library - 下載sound
sketch - import library - sound
import processing.sound.*;
SoundFile sound;
void setup()
{
size(800,600);
sound = new SoundFile(this, "blue.mp3");
sound.play();
sound.loop();
}
因不明原因sound不能使用
改用minim
import ddf.minim.*;
import ddf.minim.effects.*;
Minim minim;
AudioPlayer groove;
void setup()
{
size(200,100,P3D);
minim = new Minim(this);
groove = minim.loadFile("blue.mp3",2048);
}
沒有留言:
張貼留言