用手向螢幕揮擊的舒壓遊戲,限時內可以打越多下,分數就越高
程式碼:
import de.voidplus.leapmotion.*;
PImage img1;
PImage img2;
PImage img3;
PImage img4;
PImage img5;
PImage img6;
PImage img7;
PImage img8;
PImage img9;
PImage img10;
PImage img11;
PImage img12;
PFont font;
int lonoff,ronoff;
Boolean gameisnotover=true;
LeapMotion leap;
PVector lh=new PVector(), rh=new PVector();
int mode;
int m1;
int m2;
int endmode;
int savetime;
int timenow;
int score;
int endtime=240;
int[] scores=new int[11];
String[] data=new String[10];
void setup(){
size(960, 640);
img1=loadImage("ma.png");
img2=loadImage("ko.png");
img3=loadImage("banana.jpg");
img4=loadImage("ma2.png");
img5=loadImage("ma3.png");
img6=loadImage("banana2.png");
img7=loadImage("banana3.png");
img8=loadImage("hl.png");
img9=loadImage("hr.png");
img10=loadImage("scorebg.png");
img11=loadImage("kopon.png");
img12=loadImage("timesup.png");
data=loadStrings("data.txt");
for(int i=0;i<10;i++)
scores[i]=int(data[i]);
lonoff=0;
ronoff=0;
font=createFont("Arial", 32);
textFont(font, 32);
textAlign(CENTER);
mode=0;
score=0;
m1=0;
m2=0;
endmode=0;
savetime=millis();
imageMode(CENTER);
background(255);
leap=new LeapMotion(this);
noStroke(); fill(50);
// ...
}
void draw(){
background(255);
if(mode==0){
image(img1,240,320,240,160);
image(img2,480,320);
image(img3,720,320,240,160);
}
if(mode==1)
image(img4,480,320);
if(mode==2)
image(img6,480,320);
// HANDS
if(mode!=0)
{
image(img8,lh.x,lh.y);
image(img9,rh.x,rh.y);
timenow=millis();
int passtime=30-(timenow-savetime)/1000;
if(passtime>=0){
text(passtime+" s.",900,40);
text("Score:"+score,80,40);
}
else{
mode=3;
image(img10,480,330);
image(img12,480,320);
fill(255,255,255);
text("Your score is "+score,480,500);
if(passtime<-3){
image(img11,480,320);
if(gameisnotover){
scores[10]=score;
gameisnotover=false;
for(int i=0;i<11;i++){
for(int j=i+1;j<11;j++){
if(scores[i]<scores[j]){
int temp=scores[i]; scores[i]=scores[j]; scores[j]=temp;
}
}
}
for(int i=0;i<10;i++){
data[i]=str(scores[i]);
}
saveStrings("data.txt", data);
}
for(int i=0;i<10;i++){
if(score==scores[i]){
fill(255,0,0);
}
else{
fill(255, 255, 255);
}
text(str(scores[i]),540,95+i*54);
fill(0,0,0);
}
for(int i=0;i<10;i++){
println((i+1)+":"+str(scores[i]));
}
}
}
}
int index=0;
for(Hand hand : leap.getHands()){
if(index==0)lh=hand.getPosition();
else rh=hand.getPosition();
index++;
if(lh.x>rh.x){
PVector p=lh;lh=rh;rh=p;
}
hand.draw();
if(mode==0){
if(lh.x<410||rh.x<410){
image(img1,240,320);
m1=1;
m2=0;
}
if(lh.x>550||rh.x>550){
image(img3,720,320,480,320);
m1=0;
m2=1;
}
if((lh.x<550 && lh.x>410 && lh.y<390 && lh.y >250)||(rh.x<550 && rh.x>410 && rh.y<390 && rh.y >250)){
image(img2,480,320,200,200);
if(m1==1){
mode=1;
savetime=millis();
}
else if(m2==1){
mode=2;
savetime=millis();
}
}
}
}
if(mode==1){
if(lh.z<=45){
lonoff=0;
}
if(rh.z<=45){
ronoff=0;
}
println("now lonoff is "+lonoff);
println("now ronoff is "+ronoff);
if(lh.z>55){
image(img5,480,360,720,480);
if(lonoff==0){
score++;
lonoff=1;
println("lonoff++ is "+lonoff);
}
}
if(rh.z>55){
image(img5,480,360,720,480);
if(ronoff==0){
score++;
ronoff=1;
println("ronoff++ is "+ronoff);
}
}
}
if(mode==2){
if(lh.z<=45){
lonoff=0;
}
if(rh.z<=45){
ronoff=0;
}
println("now lonoff is "+lonoff);
println("now ronoff is "+ronoff);
if(lh.z>55){
image(img7,480,360,480,750);
if(lonoff==0){
score++;
lonoff=1;
println("lonoff++ is "+lonoff);
}
}
if(rh.z>55){
image(img7,480,360,480,750);
if(ronoff==0){
score++;
ronoff=1;
println("ronoff++ is "+ronoff);
}
}
}
}
沒有留言:
張貼留言