2. 修正Bug與美化
3. 修正後程式碼如下 :
import ddf.minim.*;
import de.voidplus.leapmotion.*;
import java.util.Map;
AudioPlayer player,SE;
Minim minim;
LeapMotion leap;
PImage bar;
int music=1;
int stage=1;
float X=400,Y=250;
float move=1;
float moveX=random(-1,1),moveY=random(-1,1);
int n=0;
int point1=0;
int point2=0;
int ballX,ballY;
float fingerX,fingerY;
int getPoint=0;
void setup()
{
size(800, 500, P3D);
leap=new LeapMotion(this);
imageMode(CENTER);
bar = loadImage("bar.jpg");
minim = new Minim(this);
player = minim.loadFile("ST2.mp3");
SE = minim.loadFile("SE.mp3");
}
void draw()
{
if (stage==1)
{
if (music==1)
{
player.close();
player=minim.loadFile("ST1.mp3");
// player.setGain(-20);
player();
}
music=2;
background(0);
fill(255);
textSize(40);
text("LEAP HOCKEY",275,200);
textSize(20);
text("Accel World",325,220);
textSize(40);
text("Press 's' To Start",250,350);
}
if (stage==2)
{
if(music==2)
{
player.close();
player=minim.loadFile("ST2.mp3");
// player.setGain(-20);
player();
}
music=3;
background(255);
stroke(255,0,0);
fill(255);
ellipse(400,250,150,150);
line(400,0,400,500);
for(Hand hand : leap.getHands())
{
n=hand.countFingers();
for(Finger finger : hand.getFingers())
{
PVector finger_position = finger.getPosition();
//finger.draw();
// if (n<=2 && finger_position.x>0 && finger_position.x<200 || finger_position.x> 600)
if (finger_position.x<400)
{
//ellipse(50,finger_position.y,25,25);
image(bar,50,finger_position.y,25,60);
}
else
{
image(bar,750,finger_position.y,25,60);
}
fingerX = finger_position.x;
fingerY = finger_position.y;
}
}
X=X+moveX;
Y=Y+moveY;
stroke(255,255,255);
fill(0,255,255);
ellipse( X , Y, 55, 55);
if (X<=0&&getPoint==0)
{
moveX=0;
moveY=0;
// moveX=-moveX;
//moveX+=move;
point2++;
getPoint++;
}
else if (Y<=0)
{
SE.close();
SE = minim.loadFile("SE.mp3");
SE.play();
moveY=-moveY;
moveY+=move;
if(moveX>0)moveX+=move;
if(moveX<0)moveX-=move;
}
else if ( dist(50,fingerY,X,Y)<80)
{
moveX = - moveX;
if(moveX>0)moveX+=move;
if(moveX<0)moveX-=move;
if(moveY>0)moveY+=move;
if(moveY<0)moveY-=move;
}
else if ( dist(750,fingerY,X,Y)<80)
{
moveX = - moveX;
if(moveX>0)moveX+=move;
if(moveX<0)moveX-=move;
if(moveY>0)moveY+=move;
if(moveY<0)moveY-=move;
}
else if (X>=800&&getPoint==0)
{
moveX=0;
moveY=0;
// moveX=-moveX;
// moveX-=move;
point1++;
getPoint++;
}
else if (Y>=500)
{
SE.close();
SE = minim.loadFile("SE.mp3");
SE.play();
moveY=-moveY;
moveY-=move;
if(moveX>0)moveX+=move;
if(moveX<0)moveX-=move;
}
fill(255,0,0);
textSize(13);
text("player1 point:"+point1,0,20);
text("player2 point:"+point2,700,20);
if(point1>=3||point2>=3) stage=3;
}
if (stage==3)
{
if(music==3)
{
player.close();
player=minim.loadFile("ST3.mp3");
// player.setGain(-20);
player();
}
music=1;
background(0);
textSize(32);
if(point1>=3) text("P1 Win!",300,250);
else if(point2>=3) text("P2 Win!",300,250);
fill(255,0,0);
text("Go Back To Menu, Press 'a' ",200,350);
}
}
void leapOnCircleGesture(CircleGesture g, int state){
int id = g.getId();
switch(state){
case 1: // Start
break;
case 2: // Update
break;
case 3: // Stop
// stage=1;
println("CircleGesture: "+id);
break;
}
}
void keyReleased() {
if (key=='s'&& stage==1)
{
stage=2;
}
if (key=='a')
{
X=0;
Y=0;
moveX=0;
moveY=0;
point1=0;
point2=0;
stage=1;
}
if(key=='r'&& stage==2)
{
X=400;
Y=250;
getPoint=0;
moveX=random(-1,1);
moveY=random(-1,1);
}
if (key=='n' && stage==2) stage=3;
}
void stop()
{
player.close();
minim.stop();
super.stop();
}
void player()
{
player.loop();
}
4. 作品Demo影片
沒有留言:
張貼留言