2022年10月24日 星期一

雪⛄互動技術概論筆記-W8

2022/10/24 Week08

# 水果忍者打字遊戲

1. 複習上週 把音樂載下來+外掛

///直接將下載好的mp3拉進專案,就會自動增一個data資料夾

import processing.sound.*;

SoundFile sound1, sound2, sound3;

void setup(){

  size(400,300);

   sound1 = new SoundFile(this, "In Game Music.mp3");

   sound1.play();

}

void draw(){


}


2. 可以切換音樂+文字

import processing.sound.*;

SoundFile sound1, sound2, sound3;

void setup(){

  size(400,300);

  textSize(50);

  fill(255,0,0);

  sound1 = new SoundFile(this, "In Game Music.mp3");

  sound2 = new SoundFile(this, "Intro Song_Final.mp3");

  sound1.play();

}

int stage=1;          ///1、2、3

void draw(){

  background(255);

  if(stage==1){///舞台1

    text("stage 1",100,100);

  }

  else if(stage==2){///舞台2

    text("stage 2",100,100);

  }

}

void mousePressed(){

  if(stage==1){     ///stage1音樂正在播,點擊切換成stage2音樂

    stage=2;

    sound1.stop();

    sound2.play();

  }

  else if(stage==2){      ///stage2音樂正在播,點擊切換成stage1音樂

    stage=1;

    sound2.stop();

    sound1.play();

  }

}


3. 切換文字(去掉上面播放音樂的程式碼)

void setup(){

  size(400,300);

  textSize(50);

  fill(255,0,0); ///紅字

}

int stage=1; ///1、2、3

void draw(){

  background(255,255,0);

  fill(255,0,0);

  textSize(80);

  if(stage==1){///舞台1

    text("stage 1",100,100);

  }

  else if(stage==2){///舞台2

    text("stage 2",100,100);

  }

}

void mousePressed(){

  if(stage==1) stage=2;

  else if(stage==2) stage=1;

}


4. 水果飛起來,然後可以消滅(暫停球飛動)

void setup(){

  size(400,300);

}

float fruitX=200, fruitY=150;  ///水果的位置 X、Y  有小數點,精確

float fruitVX=1, fruitVY=-1;    ///水果的速度 VX VY

boolean flying=true;

void draw(){

  background(255,255,0);//背景

  

  ellipse(fruitX, fruitY, 50, 50);//圓

  if(flying){ ///如果再飛,水果的位置會改變

    fruitX += fruitVX;

    fruitY += fruitVY;

  }

}

void keyPressed(){

  flying=false;  ///暫停飛翔(白球停在原地)

}


5. 水果飛起來,然後可以消滅(換下一個球)

void setup(){

  size(400,300);

}

float fruitX=200, fruitY=300;///水果的位置 X、Y有小數點,精確

float fruitVX=2, fruitVY=-13; ///水果的速度 VX VY

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);   //隨機數值,介於100~300之間

  fruitY=300;     //固定飛的高度

  fruitVX=random(-2,+2);     //隨機數值,介於-2~+2之間

  fruitVY=-13;    //回復成原本的速度

  flying=true;     //可以繼續飛

}


6. 用Class的方式修改上一個程式

//目標: class物件: 每個水果都可以用物件畫出來

class Fruit{

  float x, y, vx, vy;

  boolean flying;

  PApplet sketch;//為了讓random可以用,修改一下

  Fruit(PApplet _sketch){ //建構子: 一開始要做的事

    sketch = _sketch;//為了讓random可以用,修改一下

    reset();

  }     

  void reset(){

    x = sketch.random(100.0, 300.0);//為了讓random可以用,修改一下

    y = 300;

    vx = sketch.random(-2, +2);//為了讓random可以用,修改一下

    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); //為了讓random可以用,修改一下

}

void draw(){

  background(255,255,0);

  ellipse(fruit.x, fruit.y, 50, 50);

  fruit.update();

}

void keyPressed(){

  fruit.reset();

}


7. 先新增一個分頁(Fruit)將程式分開,再加上點擊英文,就可打落水果

///主程式

//先新增一個分頁,取名Fruit(上面倒三角形/新增分頁)

Fruit[] fruits;

void setup(){

  size(400,300);

  fruits = new Fruit[3];

  for(int i=0; i<3; i++){

    fruits[i] = new Fruit(this); //為了讓random可以用,修改一下

  }

}

void draw(){

  background(255,255,0);

  for(int i=0; i<3; i++){

    fill(255); ellipse(fruits[i].x, fruits[i].y, 50, 50); ///球

    textSize(30);

    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();

    }

  }

}

//////////////////////////////////////////

///Class: Fruit

String line="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

class Fruit{

  float x, y, vx, vy;

  boolean flying;

  char c; //水果對應的字母

  PApplet sketch;//為了讓random可以用,修改一下

  Fruit(PApplet _sketch){ //建構子: 一開始要做的事

    sketch = _sketch;//為了讓random可以用,修改一下

    reset();

  }

  void reset(){

    x = sketch.random(100.0, 300.0);//為了讓random可以用,修改一下

    y = 300;

    vx = sketch.random(-2, +2);//為了讓random可以用,修改一下

    vy = -13;

    flying = true;

    int i=int(random(26));

    c = line.charAt(i);

  }

  void update(){

    x += vx;

    y += vy;

    vy += 0.98/3; //重力加速度

  }

}

////////////////////////////////////////////////









沒有留言:

張貼留言