2020年5月26日 星期二

Processing課程 #05_Week13 用彈弓發射的憤怒鳥

2020/5/22 程式設計 Processing課程內容 08160741




.用彈弓發射的憤怒鳥






程式碼:

PImage bird,slingshot_0,slingshot_1;
void setup()
{
   size(1680,720);
   bird = loadImage("bird.png");
   slingshot_0 = loadImage("slingshot_0.png");
   slingshot_1 = loadImage("slingshot_1.png");
   imageMode(CENTER);
}

float birdX = 195,birdY = 590,oldX,oldY,vx = 0,vy = 0,SSX = 200,SSY = 650;
boolean bMoving = false,bDropping = false;

void draw()
{
  background(255);
  if(bMoving) line(mouseX-15,mouseY+15,oldX+20,oldY+5);
  image(slingshot_0,SSX,SSY,60,168);
  image(bird,birdX,birdY,50,50);
  image(slingshot_1,SSX,SSY,60,168);
  if(bMoving) line(mouseX-15,mouseY+15,oldX-10,oldY);
  strokeWeight(5);
  birdX += vx;
  birdY += vy;
  //if (birdX > 1055 || birdX < 25) vx = -vx;
  //if (birdY > 695  || birdY < 25) vy = -vy;
  if (bDropping)
  {
      vy += 0.1;
      if (birdY > 695)
      {
        vy = -vy;
        vy += 1.5;
        vx -= 0.25;
        if (vy > 0) vy = 0;
        if (vx < 0) vx = 0;
      }
     
  }
}

void mousePressed()
{
  if (dist(mouseX,mouseY,birdX,birdY) < 50)
  {
    bMoving = true;
    oldX = birdX;
    oldY = birdY;
  }
}

void mouseReleased()
{
  bMoving = false;
  bDropping = true;
  if (dist(mouseX,mouseY,birdX,birdY) < 50)
  {
    vx = (oldX - mouseX)/8;
    vy = (oldY - mouseY)/8;
  }
}

void mouseDragged()
{
  if (bMoving)
  {
    birdX = mouseX;
    birdY = mouseY;
  }
}

成果:


沒有留言:

張貼留言