2015年5月18日 星期一

第13週課堂練習

試寫水果忍者
import SimpleOpenNI.*;
SimpleOpenNI openni;
class Fruit{
  float X, Y, VX, VY;
  Fruit(float x, float y, float vx, float vy){
    X=x; Y=y; VX=vx; VY=vy;
  }
  void draw(){
    ellipse(X, Y, 50, 50);
  }
  void update(){
    X+=VX; Y+=VY; VY+=1.98;
    if(X<-100||X>740||Y<-100||Y>580){
      X=random(640); Y=random(240); VX=random(30)-15; VY=-random(30);
    }
  }
}
Fruit fruit[]= new Fruit[20];
void setup(){
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableDepth();
  openni.enableUser();
  for (int i=0; i<20; i++){
    fruit[i] = new Fruit(random(640), random(240), random(30)-15, -random(30));
  }
}
void draw(){
  openni.update();
  image(openni.userImage(), 0, 0);
  for (int i=0; i<20; i++){
    fruit[i].draw();
    fruit[i].update();
  }
}

產生水果
碰撞偵測
import SimpleOpenNI.*;
SimpleOpenNI openni;
class Fruit{
  float X, Y, VX, VY;
  boolean dead= false;
  Fruit(float x, float y, float vx, float vy){
    X=x; Y=y; VX=vx; VY=vy;
  }
  void draw(){
    ellipse(X, Y, 50, 50);
  }
  void update(){
    X+=VX; Y+=VY; VY+=1.98;
    if(X<-100||X>740||Y<-100||Y>580){
      X=random(640); Y=random(240); VX=random(30)-15; VY=-random(30);
    }
    if (dist(X, Y, mouseX, mouseY)<50) dead=true;
  }
}
void mouseMoved(){
  strokeWeight(30); stroke(255, 0, 0); line(mouseX, mouseY, pmouseX, pmouseY);
  strokeWeight(1); stroke(0);
}
Fruit fruit[]= new Fruit[20];
void setup(){
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableDepth();
  openni.enableUser();
  for (int i=0; i<20; i++){
    fruit[i] = new Fruit(random(640), random(240), random(30)-15, -random(30));
  }
}
void draw(){
  openni.update();
  image(openni.userImage(), 0, 0);
  for (int i=0; i<20; i++){
    fruit[i].draw();
    fruit[i].update();
  }
}
滑鼠軌跡

將砍到的水果變紅色
import SimpleOpenNI.*;
SimpleOpenNI openni;
class Fruit{
  float X, Y, VX, VY;
  boolean dead= false;
  Fruit(float x, float y, float vx, float vy){
    X=x; Y=y; VX=vx; VY=vy;
  }
  void draw(){
    if(dead) fill(255, 0,0);
    else fill(255);
    ellipse(X, Y, 50, 50);
  }
  void update(){
    X+=VX; Y+=VY; VY+=1.98;
    if(X<-100||X>740||Y<-100||Y>580){
      X=random(640); Y=random(240); VX=random(30)-15; VY=-random(30);
    }
    if (dist(X, Y, mouseX, mouseY)<50) dead=true;
    if(X>0 && X<640 && Y>0 && Y<480 && openni.userImage().pixels[int(X)+int(Y)*640]==color (0,0,255)) dead=true;
  }
}
void mouseMoved(){
  strokeWeight(30); stroke(255, 0, 0); line(mouseX, mouseY, pmouseX, pmouseY);
  strokeWeight(1); stroke(0);
}
Fruit fruit[]= new Fruit[20];
void setup(){
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableDepth();
  openni.enableUser();
  for (int i=0; i<20; i++){
    fruit[i] = new Fruit(random(640), random(240), random(30)-15, -random(30));
  }
}
void draw(){
  openni.update();
  image(openni.userImage(), 0, 0);
  for (int i=0; i<20; i++){
    fruit[i].draw();
    fruit[i].update();
  }
}


沒有留言:

張貼留言