2015年4月27日 星期一

Week 09

期中作品-爆氣飛碟球

按S鍵  即可開始遊戲

遊戲開始時,會有一顆小藍球在場中間
當leap motion 感應到手時,就會有一顆黑圓球出現
利用黑圓球碰撞小藍球
當碰撞越多次,小藍球就會越變越紅



--------------------------------------------------------------------------------------------------------

import de.voidplus.leapmotion.*;
import ddf.minim.*;
LeapMotion leap;

Minim minim;
AudioPlayer player;
AudioPlayer bump;

PImage begin;
PImage over;
PImage back;

void setup() {
  size(1200, 600, P3D); 
  leap=new LeapMotion(this);

  begin = loadImage("start.jpg");
  over = loadImage("gameover.jpg");
  back = loadImage("back.jpg");
  back.resize(1200, 600);

  minim = new Minim(this);
  player = minim.loadFile("start.mp3");
  player.play();
}

float ballX = 580;
float ballY = 280;

float speed = 5.0;

int a=0;
int b=0;
int myOrientation=-1;
int z=0;

int red=0;
int blue=255;

float s=second();

void draw() {
  background(back);

  if (z==0) {
    image(begin, 0, 0, 1200, 600); 
    if (keyPressed) {
      if (key=='s') {
        z=1;
      }
    }
  } else if (z==1) {

    fill(red, 0, blue);
    ellipse(ballX, ballY, 60, 60);
    
    for (Hand hand : leap.getHands ()) {

      pushMatrix();
      PVector pos = hand.getPosition();
      fill(0);
      ellipse(pos.x, pos.y, 100, 100);
      popMatrix();

      speed*=0.99;

      //ellipse(pos.x, pos.y, 100, 100);

     //fill(red, 0, blue);
      //ellipse(ballX, ballY, 60, 60);

      if     (ballX<=50 && ballY<=200) {
        speed=0; 
        z=2;
      } else if (ballX<=50 && ballY>=400) {
        speed=0; 
        z=2;
      } else if (ballX>=1150 && ballY<=200) {
        speed=0; 
        z=2;
      } else if (ballX>=1150 && ballY>=400) {
        speed=0; 
        z=2;
      } else if (ballY<=50) {
        speed=0; 
        z=2;
      } else if (ballY>=550) {
        speed=0; 
        z=2;
      } else if (ballX<0) {
        a++; 
        ballX=580; 
        ballY=280;
      } else if (ballX>1200) {
        b++; 
        ballX=580; 
        ballY=280;
      } else if (sqrt((pos.x-ballX)*(pos.x-ballX)+(pos.y-ballY)*(pos.y-ballY))<=80) {
        bump = minim.loadFile("067.mp3");
        bump.play();

        red+=10;
        blue-=10;

        if     (ballX<pos.x && ballY<pos.y) {
          myOrientation=0;
          speed=5.0;
        } else if (ballX>pos.x && ballY<pos.y) {
          myOrientation=1;
          speed=5.0;
        } else if (ballX>pos.x && ballY>pos.y) {
          myOrientation=2;
          speed=5.0;
        } else if (ballX<pos.x && ballY>pos.y) {
          myOrientation=3;
          speed=5.0;
        } else if (ballX<pos.x && pos.y==0) {
          myOrientation=4;
          speed=5.0;
        } else if (ballX>pos.x && pos.y==0) {
          myOrientation=5;
          speed=5.0;
        } else if (pos.x==0 && ballY<pos.y) {
          myOrientation=6;
          speed=5.0;
        } else if (pos.x==0 && ballY>pos.y) {
          myOrientation=7;
          speed=5.0;
        }
      }
      if (myOrientation==0)
      {
        ballX-=speed; 
        ballY-=speed;
      }
      if (myOrientation==1)
      {
        ballX+=speed; 
        ballY-=speed;
      }
      if (myOrientation==2)
      {
        ballX+=speed; 
        ballY+=speed;
      }
      if (myOrientation==3)
      {
        ballX-=speed; 
        ballY+=speed;
      }
      if (myOrientation==4)
      {
        ballX-=speed;
      }
      if (myOrientation==5)
      {
        ballX+=speed;
      }
      if (myOrientation==6)
      {
        ballY-=speed;
      }
      if (myOrientation==7)
      {
        ballY+=speed;
      }

      println(a);
      println(b);

      text("SCORE:"+a+":"+b, 130, 150);
      fill(500, 102, 500, 500);
    }
  } else if (z==2) {

    image(over, 0, 0, 1200, 600);
    if (keyPressed) {
      if (key=='r') {
        z=0;
        ballX=580;
        ballY=280;
      }
    }
  }
}


沒有留言:

張貼留言