2015年4月28日 星期二

Week 10 期中作品









作品名稱:爆氣飛碟球


這是一個在湯姆熊娛樂世界可以玩到的一種遊戲機台,我們想把它移植到我們自己的遊戲,

利用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;
int alive=1;
float speedX = 5.0, speedY=0.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();

      speedX*=1.01;
      speedY*=1.01;

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

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

      if     (ballX<=50 && ballY<=200) {
        alive=0;
        z=2;
      } else if (ballX<=50 && ballY>=400) {
        alive=0;
        z=2;
      } else if (ballX>=1150 && ballY<=200) {
        alive=0;
        z=2;
      } else if (ballX>=1150 && ballY>=400) {
        alive=0;
        z=2;
      } else if (ballY<=50) {
        speedY=-speedY;
        //z=2;
      } else if (ballY>=550) {
        speedY=-speedY;
        //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;
          speedX=5;
          speedY=5;
        } else if (ballX>pos.x && ballY<pos.y) {
          myOrientation=1;
          speedX=5;
          speedY=5;
        } else if (ballX>pos.x && ballY>pos.y) {
          myOrientation=2;
          speedX=5;
          speedY=5;
        } else if (ballX<pos.x && ballY>pos.y) {
          myOrientation=3;
          speedX=5;
          speedY=5;
        } else if (ballX<pos.x && pos.y==0) {
          myOrientation=4;
          speedX=5;
          speedY=5;
        } else if (ballX>pos.x && pos.y==0) {
          myOrientation=5;
          speedX=5;
          speedY=0;
        } else if (pos.x==0 && ballY<pos.y) {
          myOrientation=6;
          speedX=0;
          speedY=5;
        } else if (pos.x==0 && ballY>pos.y) {
          myOrientation=7;
          speedX=0;
          speedY=5;
        }
      }
      if (myOrientation==0)
      {
        ballX-=speedX;
        ballY-=speedY;
      }
      if (myOrientation==1)
      {
        ballX+=speedX;
        ballY-=speedY;
      }
      if (myOrientation==2)
      {
        ballX+=speedX;
        ballY+=speedY;
      }
      if (myOrientation==3)
      {
        ballX-=speedX;
        ballY+=speedY;
      }
      if (myOrientation==4)
      {
        ballX-=speedX;
      }
      if (myOrientation==5)
      {
        ballX+=speedX;
      }
      if (myOrientation==6)
      {
        ballY-=speedY;
      }
      if (myOrientation==7)
      {
        ballY+=speedY;
      }

      println(a);
      println(b);

      text("SCORE:    "+a+":"+b, 550, 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;
        red=0;
        blue=255;
      }
    }
  }
}

沒有留言:

張貼留言