2014年6月26日 星期四

第十周

展示期中作品:打笨蛋

用手向螢幕揮擊的舒壓遊戲,限時內可以打越多下,分數就越高



程式碼:

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);
        }
      }
    }

}

沒有留言:

張貼留言