期末作品 - 成果圖
import SimpleOpenNI.*;
import ddf.minim.*;
AudioPlayer player;
AudioPlayer gear;
Minim minim;
SimpleOpenNI openni;
PImage imgBG;
PImage imgBlue;
PImage imgStart;
int score=0;
void setup() {
size(800,600, P3D);
imgBG = loadImage("15043987.jpg");
imgStart = loadImage("123.png");
imgBlue = createImage(640, 480, ARGB);
openni = new SimpleOpenNI(this);
openni.enableDepth();
openni.enableUser();
openni.enableRGB();
minim = new Minim(this);
player = minim.loadFile("sl.mp3");
player.play();
}
float ballX0=250, ballY0=100, ballZ0=0, ballX2=350, ballY2=200, ballZ2=300;
//float ballX0=400, ballY0=300, ballZ0=0, ballX2=320, ballY2=240, ballZ2=100;
float t=0;
void draw() {
openni.update();
image(imgBG, 0, 0, 800, 600);
image(openni.rgbImage(), 0, 0, 120, 90);//position
image(openni.userImage(), 0, 90, 120, 90);//position
PImage imgUser=openni.userImage();
imgUser.loadPixels();
imgBlue.loadPixels();
for (int i=0; i<640*480; i++) {
if (imgUser.pixels[i]==color(0, 0, 255)) imgBlue.pixels[i] = color(255, 128, 128, 200);
else imgBlue.pixels[i]=color(128, 128, 128, 0);
}
if(state==2){
image(imgStart, 0, 0, 800, 600);
if(keyPressed==true){
state-=2;
}
}
else if (state==0) {
//copy
imgBlue.updatePixels();
//image(imgBlue, 40, 250, 600, 300);//pink people
image(imgBlue,100, 250, 600, 300);
pushMatrix();
noStroke();
lights();
float ballX = lerp(ballX0, ballX2, t);
float ballY = lerp(ballY0, ballY2, t);
float ballZ = lerp(ballZ0, ballZ2, t);
translate(150, 270);
translate(ballX, ballY, -24+ballZ);
sphere(30);
popMatrix();
text("Score:" + score, 350, 100);
textSize(25);
t+=0.01;
if (state!=1 && t>=1) {
newBall();
//score--;
t=0;
}
if (t>=0.99) {
hit(ballX, ballY);
println(score);
}
}
else if (state==1) {
textSize(100);
fill(255, 0, 0);
text("GAME OVER", 100, 100);
text("SCORE:"+score, 200, 200);
}
}
void newBall() {
ballX2 = random(640);
ballY2 = random(480);
}
int state = 2;
boolean hit(float x, float y) {
int yy=(int)y*480/270;
int xx=(int)x*640/500;
imgBlue.loadPixels();
gear = minim.loadFile("067.mp3");
gear.play();
if (imgBlue.pixels[yy*640+xx]==color(128, 128, 128, 0)) {
//dead
state++;
t=0;
//score-=1;
return true;
} else {
score++;
return false;
}
}
沒有留言:
張貼留言