2024年11月4日 星期一

week09

 // week09_01_createFont_loadFont_textFont

size(500, 500); //大視窗
background(0); //黑色背景
textSize(50);
text("Hello", 50, 50);

PFont font = createFont("標楷體", 50);
textFont(font);
text("中文看到了", 50, 150);

PFont font2 = createFont("elffont-rock.otf", 50);
textFont(font2); //記得先把點兩下安裝字型,才能順利 createFont()
text("ㄇㄉㄈㄎ", 50, 250); // https://gadget.chienwen.net/x/text/zhuyinwen 可輸出「只有注音」
week09_01_createFont_loadFont_textFont



// week09_02_PFont_outside_void_setup_createFont_void_draw_text
PFont font0, font, font2; // 3種字型: 英文、中文、注音文 (外面宣告,兩個函式都看得到)
void setup() {
  size(500, 500); //大視窗
  font0 = createFont("Algerian", 50); // Arial 或 Times New Roman
  font = createFont("微軟正黑體", 50);
  font2 = createFont("elffont-rock.otf", 50); //字型檔,也要拉近來哦!
  // println(PFont.list()); // 印出現在能用的系統的所有的字型
}
void draw() {
  background(0); //黑色背景
  textSize(50);
  //PFont font0 = createFont("Ariel", 50); 不能寫在裡面,建幾萬次字型電腦會亂掉
  textFont(font0);
  text("Hello", 50, 50);

  //PFont font = createFont("標楷體", 50);  不能寫在裡面
  textFont(font);
  text("中文看到了", 50, 150);

  //PFont font2 = createFont("elffont-rock.otf", 50);  不能寫在裡面
  textFont(font2); //記得先把點兩下安裝字型,才能順利 createFont()
  text("ㄇㄉㄈㄎ", 50, 250);
}
week09_02_PFont_outside_void_setup_createFont_void_draw_text

// week09_03_import_processing_sound_SoundFile_sound_new_SoundFile_play_loop 聲音相關 使用音樂相關的Library函式庫
// 我們自己寫「最精簡的版本」
import processing.sound.*;
SoundFile sound;

void setup(){
  size(500, 500);
  sound = new SoundFile(this, "In Game Music.mp3");
  //sound.play(); // 播放1次
  sound.loop(); // 一直迴圈播放
}
void draw(){
  
}
week09_03_import_processing_sound_SoundFile_sound_new_SoundFile_play_loop 

音樂控制
// week09_04_multiple_sound_files_keyPressed_stop_play
import processing.sound.*;
SoundFile sound1, sound2, hit;
void setup(){
  size(500, 500);
  sound1 = new SoundFile(this, "In Game Music.mp3");
  sound2 = new SoundFile(this, "Intro Song_Final.mp3");
  hit = new SoundFile(this, "sword slash.mp3");
  sound2.play(); // 開始時, 先播放開場的音樂
}
void draw(){
  background(255);
}
void mousePressed(){
  hit.play(); // mouse按下時, 揮劍的聲音
}
void keyPressed(){
  if(key=='1') {
    sound2.stop();
    sound1.play();
  }else{
    sound1.stop();
    sound2.play();
  }
}

// week09_05_keyboard_ninja01_background_image_appleX_appleY_appleVX_appleVY_g
PImage board; // 外面宣告變數
void setup(){
  size(600,400);
  board = loadImage("board.png"); // 裡面修改變數
}
float appleX = 100, appleY = 500, appleVX = 5, appleVY= -30;
void draw(){
  background(board); //裡面使用變數
  fill(255,0,0);
  ellipse(appleX, appleY, 80, 80); // 紅色的蘋果
  appleX += appleVX; // 照著運動的速度, X往右移
  appleY += appleVY; // 照著運動的速度, Y也會移動
  appleVY += 0.98; // 0.98 gravity 重力加速度 (移動的速度, 會受到「加速度」影響)
  if(appleX > 600){ // 裡面應該要寫成5行, 只是截圖不太夠,就黏成一行。請分成4行哦
    appleX = 100; appleY = 500; appleVX = 5; appleVY = -30; // 分號分開的4行
  } // 當蘋果太右邊時, 重設新的蘋果的位置、速度
}
week09_05_keyboard_ninja01_background_image_appleX_appleY_appleVX_appleVY_g

// week09_06_keyboard_ninja03_void_randomApple
PImage board; // 外面宣告變數
void setup(){
  size(600, 400);
  board = loadImage("board.png"); // 裡面修改變數
}
float appleX = 100, appleY = 500, appleVX = 5, appleVY= -30;
void randomApple(){
  appleX = random(100,500);
  appleY = 500;
  if(appleX<300) appleVX = random(0, 8);
  else appleVX = random(-8, 0);
  appleVY = random(-30, -25);
  
}
void draw(){
  background(board); //裡面使用變數
  fill(255,0,0);
  ellipse(appleX, appleY, 80, 80); // 紅色的蘋果
  appleX += appleVX; // 照著運動的速度, X往右移
  appleY += appleVY; // 照著運動的速度, Y也會移動
  appleVY += 0.98; // 0.98 gravity 重力加速度 (移動的速度, 會受到「加速度」影響)
  if(appleX > 600 || appleX < 0 || appleY > 550){
    randomApple(); // 當蘋果出界時, 重設新的蘋果的位置、速度
  } 
}

// week09_07_keyboard_ninja04_void_keyPressed_appleKey
PImage board; // 外面宣告變數
void setup(){
  size(600, 400);
  board = loadImage("board.png"); // 裡面修改變數
  randomApple();
}
float appleX = 100, appleY = 500, appleVX = 5, appleVY= -30;
char appleKey; // 蘋果上面, 要秀的字母
void randomApple(){
  appleX = random(100,500);
  appleY = 500;
  if(appleX<300) appleVX = random(0, 8);
  else appleVX = random(-8, 0);
  appleVY = random(-30, -25);
  appleKey = (char) ('a' + int(random(26)));
}
int score = 0;
void keyPressed(){
  if(key==appleKey){
    score += 100; //答對加分
  }else{
    score -= 200; //答錯扣很多分
  }
}
void draw(){
  background(board); //裡面使用變數
  text("Score:"+score, 400, 50);
  fill(255,0,0);
  ellipse(appleX, appleY, 80, 80); // 紅色的蘋果
  fill(255,255,0);
  textSize(50);
  textAlign(CENTER,CENTER);
  text(appleKey, appleX, appleY);
  appleX += appleVX; // 照著運動的速度, X往右移
  appleY += appleVY; // 照著運動的速度, Y也會移動
  appleVY += 0.98; // 0.98 gravity 重力加速度 (移動的速度, 會受到「加速度」影響)
  if(appleX > 600 || appleX < 0 || appleY > 550){
    randomApple(); // 當蘋果出界時, 重設新的蘋果的位置、速度
  } 
}
week09_07_keyboard_ninja04_void_keyPressed_appleKey

// week09_08_keyboard_ninja04_start_3_2_1_go
PImage board; // 外面宣告變數
void setup() {
  size(600, 400);
  board = loadImage("board.png"); // 裡面修改變數
  randomApple();
}
float appleX = 100, appleY = 500, appleVX = 5, appleVY= -30;
char appleKey; // 蘋果上面, 要秀的字母
void randomApple() {
  appleX = random(100, 500);
  appleY = 500;
  if (appleX<300) appleVX = random(0, 8);
  else appleVX = random(-8, 0);
  appleVY = random(-30, -25);
  appleKey = (char) ('a' + int(random(26)));
}
int score = 0;
void keyPressed() {
  if(state==0) state = 1; // 按任意鍵,會開始 3,2,1倒數
  if(state==2){
    if (key==appleKey) {
      score += 100; //答對加分
    } else {
      score -= 20; //答錯扣少少分
    }
  }
}
int state = 0; //0: wait, 1: 3, 2, 1, GO, 2: Game
int countdown = 60*4; // 倒數計時3秒+GO1秒
void draw() {
  background(board); //裡面使用變數
  textSize(50);
  textAlign(CENTER,CENTER);
  fill(255,255,0);
  if (state==0) text("Press Any Key to Start", 300, 200);
  else if(state==1){
    textSize(100);
    countdown--;
    if(countdown>60*3) text("3", 300, 200);
    else if(countdown>60*2) text("2", 300, 200);
    else if(countdown>60*1) text("1", 300, 200);
    else if(countdown>0) text("GO", 300, 200);
    else state = 2; //時間用完, 就跳入新的畫面
  } else {
    text("Score:"+score, 400, 50);
    fill(255, 0, 0);
    ellipse(appleX, appleY, 80, 80); // 紅色的蘋果
    fill(255, 255, 0);
    textSize(50);
    textAlign(CENTER, CENTER);
    text(appleKey, appleX, appleY);
    appleX += appleVX; // 照著運動的速度, X往右移
    appleY += appleVY; // 照著運動的速度, Y也會移動
    appleVY += 0.98; // 0.98 gravity 重力加速度 (移動的速度, 會受到「加速度」影響)
    if (appleX > 600 || appleX < 0 || appleY > 550) {
      randomApple(); // 當蘋果出界時, 重設新的蘋果的位置、速度
    }
  }
}
week09_08_keyboard_ninja04_start_3_2_1_go
// week09_09_keyboard_ninja06_add_music
import processing.sound.*;
SoundFile sound1, sound2, sound3;
PImage board; // 外面宣告變數
void setup() {
  size(600, 400);
  board = loadImage("board.png"); // 裡面修改變數
  randomApple();
  sound1 = new SoundFile(this, "Intro Song_Final.mp3");
  sound2 = new SoundFile(this, "Gong.mp3");
  sound3 = new SoundFile(this, "In Game Music.mp3");
  background(board); //先畫背景, 以免看起來像當機的灰色畫面
  sound1.play();
}
float appleX = 100, appleY = 500, appleVX = 5, appleVY= -30;
char appleKey; // 蘋果上面, 要秀的字母
void randomApple() {
  appleX = random(100, 500);
  appleY = 500;
  if (appleX<300) appleVX = random(0, 8);
  else appleVX = random(-8, 0);
  appleVY = random(-30, -25);
  appleKey = (char) ('a' + int(random(26)));
}
int score = 0;
void keyPressed() {
  if(state==0){
    state = 1; // 按任意鍵,會開始 3,2,1倒數
    sound1.stop();
    sound2.play(); // 3
  } else if(state==2){
    if (key==appleKey) {
      score += 100; //答對加分
    } else {
      score -= 20; //答錯扣少少分
    }
  }
}
int state = 0; //0: wait, 1: 3, 2, 1, GO, 2: Game
int countdown = 60*4; // 倒數計時3秒+GO1秒
void draw() {
  background(board); //裡面使用變數
  textSize(50);
  textAlign(CENTER,CENTER);
  fill(255,255,0);
  if (state==0) text("Press any Key to Start", 300, 200);
  else if(state==1){
    textSize(100);
    countdown--;
    if(countdown%60 == 0){
      sound2.stop(); // 同一個音樂關掉
      sound2.play(); // 再播一次, 有點像打鼓的節奏的感覺
    }
    if(countdown>60*3) text("3", 300, 200);
    else if(countdown>60*2) text("2", 300, 200);
    else if(countdown>60*1) text("1", 300, 200);
    else if(countdown>0) text("GO", 300, 200);
    else {
      state = 2; //時間用完, 就跳入新的畫面
      sound2.stop();
      sound3.loop();
    }
  } else {
    text("Score:"+score, 400, 50);
    fill(255, 0, 0);
    ellipse(appleX, appleY, 80, 80); // 紅色的蘋果
    fill(255, 255, 0);
    textSize(50);
    textAlign(CENTER, CENTER);
    text(appleKey, appleX, appleY);
    appleX += appleVX; // 照著運動的速度, X往右移
    appleY += appleVY; // 照著運動的速度, Y也會移動
    appleVY += 0.98; // 0.98 gravity 重力加速度 (移動的速度, 會受到「加速度」影響)
    if (appleX > 600 || appleX < 0 || appleY > 550) {
      randomApple(); // 當蘋果出界時, 重設新的蘋果的位置、速度
    }
  }
}
week09_09_keyboard_ninja06_add_music

沒有留言:

張貼留言