2022年10月24日 星期一

互動技術 week08 課堂筆記

 1 - 1  先下載音樂,並播放

import processing.sound.*;
SoundFile sound1, sound2, sound3;
void setup()
{
  size(400,300);
  sound1 = new SoundFile(this, "In GameMusic.mp3");
  sound1.play();
}
void draw()
{
  
}

1 - 2  點擊滑鼠可以切換音樂
import processing.sound.*;
SoundFile sound1, sound2, sound3;
void setup()
{
  size(400,300);
  textSize(50);
  fill(255,0,0);
  sound1 = new SoundFile(this, "Monkey 1.mp3");
  sound2 = new SoundFile(this, "Monkey 2.mp3");
  sound1.play();
}
int stage=1;
void draw()
{
  background(255);
  if(stage==1)
  {
    text("stage 1", 100, 100);
  }
  else if(stage==2)
  {
    text("stage 2", 100, 100);
  }
}
void mousePressed()
{
  if(stage==1)
  {
    stage=2;
    sound1.stop();
    sound2.play();
  }
  else if(stage==2)
  {
    stage=1;
    sound2.stop();
    sound1.play();
  }
}

1 - 3  將剛剛的程式簡化
import processing.sound.*;
SoundFile sound1, sound2, sound3;
void setup()
{
  size(400,300);
}
int stage=1;
void draw()
{
  background(255,255,0);
  fill(255,0,0);
  textSize(80);
  if(stage==1)
  {
    text("stage 1", 100, 100);
  }
  else if(stage==2)
  {
    text("stage 2", 100, 100);
  }
}
void mousePressed()
{
  if(stage==1) stage=2;
  else if(stage==2) stage=1;
}

2 - 1  會飛的物體
void setup()
{
  size(400,300);
}
float fruitX=200, fruitY=150;
float fruitVX=1, fruitVY=-1;
boolean flying=true;
void draw()
{
  background(255,255,0);
  ellipse(fruitX, fruitY, 50,50);
  if(flying)
  {
    fruitX += fruitVX;
    fruitY += fruitVY;
  }
}
void keyPressed()
{
  flying = false;
}

2 - 2  增加地吸引力,讓球會往下掉
void setup()
{
  size(400,300);
}
float fruitX=200, fruitY=300;
float fruitVX=2, fruitVY=-13;
boolean flying=true;
void draw()
{
  background(255,255,0);
  ellipse(fruitX, fruitY, 50,50);
  if(flying)
  {
    fruitX += fruitVX;
    fruitY += fruitVY;
    fruitVY += 0.98/3;
  }
}
void keyPressed()
{
  flying = false;
  fruitReset();
}
void fruitReset()
{
  fruitX = random(100,300);
  fruitY = 300;
  fruitVX = random(-2, +2);
  fruitVY = -13;
  flying = true;
}

2 - 3  加以改進
class Fruit
{
  float x, y, vx, vy;
  boolean flying;
  PApplet sketch;
  Fruit(PApplet _sketch)
  {
    sketch = _sketch;
    reset();
  }
  void reset()
  {
    x = sketch.random(100.0, 300.0);
    y = 300;
    vx = sketch.random(-2,+2);
    vy = -13;
    flying = true;
  }
  void update()
  {
    x += vx;
    y += vy;
    vy += 0.98/3;
  }
}
Fruit fruit;
void setup()
{
  size(400,300);
  fruit = new Fruit(this);
}
void draw()
{
  background(255,255,0);
  ellipse(fruit.x, fruit.y, 50,50);
  fruit.update();
}
void keyPressed()
{
  fruit.reset();
}

2 - 4
第一部分:
Fruit [] fruits;
void setup()
{
  size(400,300);
  fruits = new Fruit[3];
  for(int i=0 ; i<3 ; i++)
  {
    fruits[i] = new Fruit(this);
  }
}
void draw()
{
  background(255,255,0);
  for(int i=0 ; i<3 ; i++)
  {
    fill(255);
    ellipse(fruits[i].x, fruits[i].y, 50, 50);
    textAlign(CENTER, CENTER);
    fill(0);
    text(fruits[i].c, fruits[i].x, fruits[i].y);
    fruits[i].update();
  }
}
void keyPressed()
{
  for(int i=0 ; i<3 ; i++)
  {
    if(keyCode == fruits[i].c)
    {
      fruits[i].reset();
    }
  }
}

第二部分:
String line="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
class Fruit
{
  float x, y, vx, vy;
  boolean flying;
  char c;
  PApplet sketch;
  Fruit(PApplet _sketch)
  {
    sketch = _sketch;
    reset();
  }
  void reset()
  {
    x = sketch.random(100.0, 300.0);
    y = 300;
    vx = sketch.random(-2,+2);
    vy = -13;
    flying = true;
    int i=int(random(26));
    c = line.charAt(i);
  }
  void update()
  {
    x += vx;
    y += vy;
    vy += 0.98/3;
  }
}



沒有留言:

張貼留言