2016年2月25日 星期四

02160040_周子伍,Week01









以上四張圖為第一週上課的主要操作,結合leap motion 及 processing 的應用
以下為程式碼:
import de.voidplus.leapmotion.*;

LeapMotion leap;

void setup() {

  size(800,600);
  leap = new LeapMotion(this);

}
void draw() {

  background(255);
  for (Hand hand : leap.getHands ()) {
  hand.draw(); }
}


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

爆氣飛碟球

https://www.youtube.com/watch?v=1jJlSw3AWcE
這是之前學長姐做的範例,覺得很有趣很好玩,因為小時候玩過類似這樣的遊戲台所以印像蠻深刻的。而為了增加比賽的刺激感,學長姐做的這個球的速度會越變越快,且球還會變色蠻有創意的。

02160836_程玟綺,Week01

第一堂課:












 下載leap並安裝












右下方小箭頭 -> 右鍵點綠色長方形 -> visualizer











Processing 解壓/執行















Sketch-ImportLibrary 找Leap Motion for Processing












找 Leap Motion 範例

第二堂課:











實作用簡短的程式碼 做到跟範例一樣的效果

import de.voidplus.leapmotion.*;

LeapMotion leap;
void setup() {
  size(800, 600);
  leap = new LeapMotion(this);
}
void draw() {
  background(255);
  for (Hand hand : leap.getHands ()){
    
    hand.draw();
  }

}

第三堂課:

期中作品
https://www.youtube.com/watch?v=wSvnfTCjvHI
1.一個類似闖關的迷宮小遊戲
2.有一顆小球,要用小球去推光源
3.在黑暗中利用光源尋找出口



期中作業

我想試試看電流及級棒
https://www.youtube.com/watch?v=1bqc5QvK8Hk

Week 01 02160120 黃冠中

//Test hunting point game by ceylonmilktea
import ddf.minim.*;
Minim minim;
AudioPlayer in;
import de.voidplus.leapmotion.*;
LeapMotion leap;
PImage mypoint, enemypoint, background, prepare, attack,GGBD;
int n=0, b=-1, Damage=0, limit, killshot=1;//n=number of enemypoint,b=block of enemypoint,True or False of Damage
float enemyX [] = new  float[600];
float enemyY [] = new  float[600];
float mySpeedX[]=new float [600];
float mySpeedY[]=new float [600];
PVector myHandPosition=new PVector();
int GameTime, DamageTime=-100000,Score=0;
int EnemyTime [] = new int[60];
float myResetY=(myHandPosition.y-270)*600/280;
float myResetX=(myHandPosition.x-150)*800/550;
int  s=0, GoodGame=0;//s=use for loop, GoodGame use for GG
int GoodTime=0;
/////////////////////////////////////////////////////////
void setup()
{
  minim = new Minim(this);
in = minim.loadFile("demo.mp3");

  leap = new LeapMotion(this);
  size(800, 600, OPENGL);
  mypoint=loadImage("test_point.png");
  enemypoint=loadImage("test_enemypoint.png");
  background=loadImage("background.png");
  prepare=loadImage("test_enemypoint_prepare2.png");
  GGBD=loadImage("Gameover.jpg");
  for (int i=0; i<600; i++)
  {
    mySpeedX[i]=0.8;
    mySpeedY[i]=0.8;
    enemyX[i]=random(800);
    enemyY[i]=random(600);
  }//build the enemypoint's pointXY & speed
}
//////////////////////////////////////////////////////////
void draw()
{
  println(GameTime/1000);
  int fps = leap.getFrameRate();
  for (Hand hand : leap.getHands ()) {
    Finger  finger_index     = hand.getIndexFinger();
    hand.draw();
    for (Finger finger : hand.getFingers ()) {

      switch(finger.getType()) {
      case 0:
        // System.out.println("thumb");
        myHandPosition   = finger.getPosition();
        //println(myHandPosition);
        break;
      case 1:
        // System.out.println("index");
        break;
      case 2:
        // System.out.println("middle");
        break;
      case 3:
        // System.out.println("ring");
        break;
      case 4:
        // System.out.println("pinky");
        break;
      }
    }
  }
  if (GoodGame==1){background(GGBD);println(GoodTime);textSize(50);
    fill(255, 0, 0);
  text("Your Score: "+Score, 250, 100);
 
 }
  else
  {in.play();
    GameTime=millis();

    if ((GameTime-s)>=3000&&n<600) {
      Score+=3;
      n+=10;
      s=GameTime;
      EnemyTime[++b]=millis();
    }//enemypoint limit&build time

    background(background);


    EnemyRandomPoint();
    myResetY=(myHandPosition.y-270)*600/280;
    myResetX=(myHandPosition.x-150)*800/550;
    image(mypoint, myResetX-25, myResetY-25, 50, 50);
    //TriggerDamage();
  }
}
////////////////////////////////////////////////////////
/*void mousePressed()
 {
 if (mousePressed==true) {
 Damage=1;
 DamageTime=millis();
 }
 }
 //////////////////////////////////////////////////////
 void TriggerDamage()
 {
 if (millis()-DamageTime<2000)image(attack, mouseX-75, mouseY-75, 200, 200);
 else Damage=0;
 }*/
///////////////////////////////////////////////////////////
void EnemyRandomPoint()
{

  for (int i=0; i<n; i++)  
  {
    if (millis()-EnemyTime[i/10]<1000) {
      image(prepare, enemyX[i], enemyY[i], 50, 50);
    } else
    {
      if (millis()-EnemyTime[i/10]<10000) {
        if (killshot==-1) {
          enemyX[i]=-100;
          enemyY[i]=-100;
          mySpeedX[i]=0;
          mySpeedY[i]=0;
        } else
        {
          UpdateEnemypoint(i);
          image(enemypoint, enemyX[i]+=mySpeedX[i], enemyY[i]+=mySpeedY[i], 50, 50);
        }
      }
    }
  }
}
///////////////////////////////////////////////////////////
void keyPressed()
{
  if (key == 's')killshot*=-1;
  if (key == 'r') {
    Score=0;
    in.rewind();
    GoodGame=0;
    GameTime=0;
    n=0;
    b=-1;
    for (int i=0; i<600; i++)
    {
      mySpeedX[i]=1;
      mySpeedY[i]=1;
      enemyX[i]=random(800);
      enemyY[i]=random(600);
    }
  }
}
///////////////////////////////////////////////////////////
void  UpdateEnemypoint(int limit)
{
  for (int i =0; i<=limit; i++)
  {
    float speedX=  myResetX-25-enemyX[i];
    if (speedX<0) {
      if (mySpeedX[i]>0)
      {
        mySpeedX[i]*=-1;
      }
    } else
    {
      if (mySpeedX[i]<0)
      {
        mySpeedX[i]*=-1;
      }
    }


    float speedY= myResetY-25-enemyY[i];
    if (speedY<0) {
      if (mySpeedY[i]>0)
      {
        mySpeedY[i]*=-1;
      }
    } else
    {
      if (mySpeedY[i]<0)
      {
        mySpeedY[i]*=-1;
      }
    }
    if (abs(speedX)<15&&abs(speedY)<15)GameOver();
  }
}
////////////////////////////////////////////////
void GameOver()
{
  GoodGame=1;
  GoodTime=GameTime/1000;
  in.pause();
 


}

複習之前寫的遊戲

02160323_week01_class

1))一開始先下載安裝
https://www.leapmotion.com/
(進入網站


2))把leapmotion插進電腦
開始玩


3))開proccessing跑範例





4))自己打一次



有殘影感覺很棒

第一堂課沒遲到~

01160324_何彥澤_week01



02163042_王冠閔 Week 01


測試環境

1.Processing 解壓/執行
2.Sketch-ImportLibrary找Leap Motion for Processing
3.安裝好,File-Examples,ImportLibrary
4.找Leap Motion範例
5.找Leap APP/youtube找別人的作品,思考其中作品














自己寫Leap程式


import de.voidplus.leapmotion.*;

LeapMotion leap;

void setup() {
  size(800, 500);
  leap = new LeapMotion(this);
}

void draw() {
  background(255);
  for (Hand hand : leap.getHands ()) {
    hand.draw();
  }
}

畫出手↑↑