2018年10月18日 星期四

W06 陳泓丞的課堂筆記

N01

試著寫出 Ninja Fruit 的程式碼

球以拋物線往上丟

float fruitX, fruitY, fruitVX, fruitVY;
void setup()
{
  size(800,600);
  fruitX=30;   fruitVX=3;
  fruitY=700;  fruitVY=-35;
}
void draw()
{
  background(0);
  ellipse(fruitX, fruitY, 100, 100);
  fruitX+=fruitVX;
  fruitY+=fruitVY;
  fruitVY+=0.98;
}



N02

把程式碼加上陣列,使其可以一次丟20顆球

float [] fruitX=new float[20];
float [] fruitY=new float[20];
float [] fruitVX=new float[20];
float [] fruitVY=new float[20];
void setup()
{
  size(800,600);
  for(int i=0;i<20;i++)
  {
    fruitX[i]=random(800);   fruitVX[i]=3;
    fruitY[i]=700;  fruitVY[i]=-35;
  }
}
void draw()
{
  background(0);
  for(int i=0;i<20;i++)
  {
    ellipse(fruitX[i], fruitY[i], 100, 100);
    fruitX[i]+=fruitVX[i];
    fruitY[i]+=fruitVY[i];
    fruitVY[i]+=0.98;
  }
}



N03

使水果有重生功能

1. 初始值設定    2.滑鼠碰到重生     3.水果掉到螢幕下重生

float [] fruitX=new float[20];
float [] fruitY=new float[20];
float [] fruitVX=new float[20];
float [] fruitVY=new float[20];
void reborn(int i)
{
  fruitX[i]=random(800);   fruitVX[i]=random(6)-3;
  fruitY[i]=700;  fruitVY[i]=-35;
}
void setup()
{
  size(800,600);
  for(int i=0;i<20;i++)
  {
    reborn(i);
  }
}
void draw()
{
  background(0);
  for(int i=0;i<20;i++)
  {
    if( dist(mouseX, mouseY, fruitX[i], fruitY[i])<=50)
    {
      reborn(i);
      continue;
    }
    ellipse(fruitX[i], fruitY[i], 100, 100);
    fruitX[i]+=fruitVX[i];
    fruitY[i]+=fruitVY[i];
    fruitVY[i]+=0.98;
    if(fruitY[i]>700) reborn(i);
  }
}

沒有留言:

張貼留言