2014年6月5日 星期四

譚庚倫的第十五週作業

我們是做拳擊遊戲,目前我們已經把processing和kinect結合,可以用手勢去控制攻擊的拳,並且做身體的閃躲來躲避敵人的攻擊。
以下是程式碼
:import SimpleOpenNI.*;
import saito.objloader.*;
import ddf.minim.*;


OBJModel model, model1,man;
PImage boom,bg,lose,win;
Minim m;
AudioPlayer bgmus,hit;
void setup()
{
  size(600, 400, P3D);
  model = new OBJModel(this, "lefthand2.obj", "absolute", TRIANGLES);
  model.enableDebug();
  model1 = new OBJModel(this, "righthand.obj", "absolute", TRIANGLES);
  model1.enableDebug();
  man=new OBJModel(this, "boy.obj", "absolute", TRIANGLES);
  man.enableDebug();
  boom=loadImage("boom.jpg");
  lose=loadImage("loser.jpg");
  win=loadImage("winner2.jpg");
  bg=loadImage("bg.png");
  m=new Minim(this);
   hit=m.loadFile("punch.wav");
    bgmus=m.loadFile("bg.mp3");
}
int coolDown=100;
float ballz=0;
float hookAngle=0;
int hooktype=0;
float mhookAngle=0;
int timerBoom=0;
int user=0;
int user1=0;
int blooduser=600;
int bloodman=600;
int lnohit=0;
int rnohit=0;
int dnohit=0;
void draw()
{
  bgmus.play();

if (timerBoom>0) {
    image(boom, 0, 0, 600, 400);
    timerBoom--;
    return;
  }

background(255);


pushMatrix();
scale(50);
translate(300,200,200);
//man.draw();
popMatrix();
 fill(255,0,0);
rect(0,350, blooduser, 50);
 fill(255,0,0);
rect(0,0, bloodman, 50);
 if(blooduser<=0)
  {
       image(lose, 0, 0, 600, 400);
       return ;
  }
    if(bloodman<=0)
  {
      image(win, 0, 0, 600, 400);
      return ;
  }

  if (coolDown>0) {
    coolDown--;
    return;
  }
  if(user==1)
  {
    pushMatrix();
    noStroke();
    lights();
    translate(300,0,-200);
   translate(cos(mhookAngle)*200, 200,550-sin(mhookAngle)*200);
    //translate(300,300);
    rotateY(mhookAngle+90);
    println(mhookAngle);
    model1.draw();
    mhookAngle+=0.01;
    popMatrix();
     if (mhookAngle>=1.6)
     {
        hit.rewind();
   hit.play();
        mhookAngle=0;
        user=0;
     
     
        bloodman-=50;
       
   }
  }
  if(user1==1)
  {
    pushMatrix();
    noStroke();
    lights();
    translate(200,0,200);
   translate(50+cos(mhookAngle)*100,200,100+sin(mhookAngle)*200);
    //translate(300,300);
   // rotateX(30);
    rotateY(-180);
    println("=================="+mhookAngle);
    model.draw();
    mhookAngle+=0.09;
    popMatrix();
     if (mhookAngle>=4.5)
     {
        hit.rewind();
   hit.play();
        mhookAngle=0;
        user1=0;
     
 
        bloodman-=50;
       
     }
  }

  if (hooktype==0)
  {
    println("hooking_right");
    pushMatrix();
    noStroke();
    lights();
    translate(300+sin(hookAngle)*150, 200, -cos(hookAngle)*300);
    //translate(300,300);
    rotateY(-hookAngle+90);
    println(hookAngle);
    model.draw();
    hookAngle+=0.04;
    popMatrix();
    if (hookAngle>=3)
    {

     if(rnohit==0)
        {
           hit.rewind();
           hit.play();
        println("****************************");
        blooduser-=50;
       timerBoom=60;
     
        }
     image(boom,300,200,600,400);
     rnohit=0;
   
     reset();
    }
  }
  if (hooktype==1)
  {

    println("hooking");
    pushMatrix();
    noStroke();
    lights();
    translate(300-sin(hookAngle)*150, 200, -cos(hookAngle)*300);
    // translate(300,300);
    rotateY(hookAngle+180);
    println(hookAngle+180);
    model1.draw();
    hookAngle+=0.04;

    popMatrix();
    if (hookAngle>=3)
    {
   
if(lnohit==0)
{
    hit.rewind();
   hit.play();
  println("ye=============================s");
      blooduser-=50;
    timerBoom=60;

}
 lnohit=0;
image(boom, 100, 100, 600, 400);
 
 
     

   


      reset();
    }
  }
  if (hooktype==2) {

    pushMatrix();
    noStroke();
    lights();
    translate(300, 200, ballz);
    fill(255,0,0);
    sphere(28);
    println("Ballz"+ballz);
    ballz+=5;

 
    if (ballz==400)
    {
 
      if(dnohit==0)
{
   hit.rewind();
   hit.play();
  println("++++++++++++++++++++");
      blooduser-=50;
       timerBoom=60;
}
 dnohit=0;
      println("hookball");
   
     
      reset();
    }
    popMatrix();
  }
}
void reset() {
  hookAngle=0;
  hooktype=int(random(3));
  ballz=0;
  coolDown=100;
}
void keyPressed()
{
  if(key=='r')
  {
    rnohit=1;
  }
  if(key=='l')
  {
    lnohit=1;
  }
  if(key=='a')
  {
  user=1;

  }
  if(key=='w')
  {
    user1=1;
  }


}
void keyReleased()
{
if(key=='d')
{
  dnohit=1;
  println("head is down");wrd
}
  if(key=='a')
  {
     
  }
}

沒有留言:

張貼留言