2013年10月27日 星期日

第8週上課


1.
   吃掉小老鼠
   會有壞老鼠出來
2.
   被壞老鼠碰到~就死掉
3.
   小老鼠碰到牆壁會反彈


float [] msX=new float[5], msY=new float[5];
float []msVX=new float[5], msVY=new float[5];
int []scolor=new int[5];

int top=0, catX=mouseX, catY=mouseY, S=100;
PImage ms, cat, badms;
void setup() {
  size(600, 600);
  ms=loadImage("http://scitech.people.com.cn/mediafile/200807/07/F200807070850442343926401.jpg");
  cat=loadImage("http://max218.com/wp-content/uploads/2013/02/%E8%B2%93.jpg");
  badms=loadImage("http://www.icoou.com/uploadfile_20091016/2010/12/28/20101228125512809.jpg");
  for (int i=0;i<5;i++) {
    newms(i);
    scolor[i]=0;
  }
}
int bad=0;
void draw() {

  if (bad==1) {
    background(255, 0, 0);
    for (int i=0;i<5;i++) {
      msVX[i]=0;
      msVY[i]=0;
    }
  }
  else background(0);
  image(cat, mouseX-50, mouseY-50, 100, 100);
  for (int i=0;i<5;i++) {
    if (scolor[i]==0)                                                       // the ms image
      image(ms, msX[i], msY[i], 50, 50);
    else if (scolor[i]==1)                                                 // the ms image to the bad ms image
      image(badms, msX[i], msY[i], 100, 100);
    msX[i]+=msVX[i];
    msY[i]+=msVY[i];
    if (msX[i]<0 || msX[i]>600 ||msY[i]<0 || msY[i]>600)     //change the direction
    {
      if (msX[i]<0)
      {
        msVX[i]=-msVX[i];
      }
      if (msY[i]<0)
      {
        msVY[i]=-msVY[i];
      }
      if (msX[i]>600)
      {
        msVX[i]=-msVX[i];
      }
      if (msY[i]>600)
      {
        msVY[i]=-msVY[i];
      }

      //newms(i); //call new one
    }
    if (dist(msX[i], msY[i], catX-30, catY-30)<S)     //cat eat the ms and ms become badms
    {
      if (scolor[i]==1)
      {
        bad=1;
      }
      else
        scolor[i]=1;      
      newms(i);
      msVX[i]=-msVX[i];
      msVY[i]=-msVY[i];
    }
    //bad=1;
  }
}
void newms(int i) {

  float angle=random(2*PI);
  msVX[i]=cos(angle);
  msVY[i]=sin(angle);
  int dir=int(random(4));
  if (dir==0) {
    msX[i]=random(600);
    msY[i]=0;
  }
  else if (dir==1) {
    msX[i]=random(600);
    msY[i]=600;
  }
  else if (dir==2) {
    msY[i]=random(600);
    msX[i]=0;
  }
  else if (dir==3) {
    msY[i]=random(600);
    msX[i]=600;
  }
}
void mouseMoved() {
  catX=mouseX;
  catY=mouseY;
}

沒有留言:

張貼留言