2013年11月17日 星期日

WEEK10 期中作業 免疫系統



float[]ballX=new float[50], ballY=new float[50];
float[]ballVX=new float[50], ballVY=new float[50];
float[]ball2X=new float[50], ball2Y=new float[50];
float[]ball2VX=new float[50], ball2VY=new float[50];
float imgManX=280, imgManY=300, S=20;
float imgMan2X=310, imgMan2Y=300, S2=20;
int top=0;
PImage imgBall;
PImage imgBall2;
PImage imgMan;
PImage imgMan2;
PImage imgBack;
PImage imgWin;
PImage imgLose;
int total=0;
int total2=0;
int countDown=20*30;
import ddf.minim.*;
Minim m;
AudioPlayer la;
AudioPlayer ha;
AudioPlayer bg;



void setup() {
  size(600, 600);
  m=new Minim(this);
  la=m.loadFile("LASER.wav");
  ha=m.loadFile("hammeronce.wav");
  bg=m.loadFile("01.mp3");
  bg.play();
  imgBack=loadImage("987.jpg");
  imgWin=loadImage("456.jpg");
  imgLose=loadImage("654.jpg");
  imgMan=loadImage("123.png");
  imgMan2=loadImage("321.png");
  imgBall=loadImage("http://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Sida-aids.png/36px-Sida-aids.png");
  for (int i=0;i<50;i++) {
    newBall(i);
  }
  imgBall2=loadImage("http://lt.gameone.com/weapon_images/k53_m1ggnwclzsax.gif");
  for (int i=0;i<50;i++) {
    newBall2(i);
  }
}




void draw() {

  background(0);

  if (countDown>0) {
    background(255);

    image(imgBack, 0, 0, 600, 600);

    countDown--;
    fill(0);
    text("倒數"+countDown/30+"秒START", 260, 400);
    return;
  }

  background(0);

  imageMode(CENTER);

  fill(255, 0, 0);
  rect(0, 0, total*3, 50);
  rect(300, 0, total2*3, 50);

  fill(0);
  text("白血球"+total+"分", 30, 30);
  fill(0);
  text("病毒"+total2+"分", 500, 30);

  image(imgMan, imgManX, imgManY);
  image(imgMan2, imgMan2X, imgMan2Y);


  for (int i=0;i<50;i++) {
    image(imgBall, ballX[i], ballY[i], 20, 20);
    ballX[i]+=ballVX[i];
    ballY[i]+=ballVY[i];
    if (ballX[i]<0||ballX[i]>600||ballY[i]<0||ballY[i]>600)newBall(i);
    if (dist(ballX[i], ballY[i], imgManX, imgManY)<S) {
      ballX[i]=0;
      total+=3;
      la.rewind();
      la.play();
    };
    if (dist(ballX[i], ballY[i], imgMan2X, imgMan2Y)<S2) {
      ballX[i]=0;
      total2-=5;
      ha.rewind();
      ha.play();
    };
  }
  for (int i=0;i<50;i++) {
    image(imgBall2, ball2X[i], ball2Y[i], 20, 20);
    ball2X[i]+=ball2VX[i];
    ball2Y[i]+=ball2VY[i];
    if (ball2X[i]<0||ball2X[i]>600||ball2Y[i]<0||ball2Y[i]>600)newBall2(i);
    if (dist(ball2X[i], ball2Y[i], imgManX, imgManY)<S) {
      ball2X[i]=0;
      total-=5;
      ha.rewind();
      ha.play();
    };
    if (dist(ball2X[i], ball2Y[i], imgMan2X, imgMan2Y)<S2) {
      ball2X[i]=0;
      total2+=3;
      la.rewind();
      la.play();
    };
  }

  if (total<0)
  {
    m.stop();
    background(255);
    image(imgLose, 300, 300, 600, 600);
    S=0;
    S2=0;
  }
  if (total2<0)
  {
    m.stop();
    background(255);
    image(imgWin, 300, 300, 600, 600);
    S=0;
    S2=0;
  }
  if (total>=100)
  {
    m.stop();
    background(255);
    image(imgWin, 300, 300, 600, 600);
    S=0;
    S2=0;
  }
  if (total2>=100)
  {
    m.stop();
    background(0);
    image(imgLose, 300, 300, 600, 600);
    S=0;
    S2=0;
  }
}




void newBall(int i) {
  float angle=random(2*PI);
  ballVX[i]=cos(angle);
  ballVY[i]=sin(angle);
  int dir=int(random(4));
  if (dir==0) {
    ballX[i]=random(600);
    ballY[i]=0;
  }
  else if (dir==1) {
    ballX[i]=random(600);
    ballY[i]=600;
  }
  else if (dir==2) {
    ballX[i]=0;
    ballY[i]=random(600);
  }
  else if (dir==3) {
    ballX[i]=600;
    ballY[i]=random(600);
  }
}
void newBall2(int i) {
  float angle=random(2*PI);
  ball2VX[i]=cos(angle);
  ball2VY[i]=sin(angle);
  int dir=int(random(4));
  if (dir==0) {
    ball2X[i]=random(600);
    ball2Y[i]=0;
  }
  else if (dir==1) {
    ball2X[i]=random(600);
    ball2Y[i]=600;
  }
  else if (dir==2) {
    ball2X[i]=0;
    ball2Y[i]=random(600);
  }
  else if (dir==3) {
    ball2X[i]=600;
    ball2Y[i]=random(600);
  }
}

void keyPressed()
{
  if (key=='8') {
    imgManY-=10;
  }
  if (key=='5') {
    imgManY+=10;
  }
  if (key=='6') {
    imgManX+=10;
  }
  if (key=='4') {
    imgManX-=10;
  }

  if (key=='w') {
    imgMan2Y-=10;
  }
  if (key=='s') {
    imgMan2Y+=10;
  }
  if (key=='d') {
    imgMan2X+=10;
  }
  if (key=='a') {
    imgMan2X-=10;
  }
}

沒有留言:

張貼留言