2014年6月9日 星期一

譚庚倫第十六週的作業


把米奇加上去,期末作業完成拉~




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, "MickeyMouse.obj", "relative", 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);

  noStroke();
  lights();
  pushMatrix();
  scale(0.2);
  translate(1500, 1000,-500);
  man.draw();
  popMatrix();
 
  noLights();
 
  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");
  }
  if (key=='a')
  {
  }
}

沒有留言:

張貼留言