2024年11月4日 星期一

Week09-唐門外系弟子-林活修行互動技術秘笈

 week09_01_createFont_loadFont_textFont

最近世俗不知哪流行的文字,下載精靈文轉換器精靈岩安裝

丟入processing

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);
text("ㄇㄉㄈㄎ", 50, 250);
week09_02_PFont_outside_void_setup_createFont_void_draw_text
另一種寫法 println(PFont.list());印出現在系統能用的所有字型
PFont font0, font, font2;
void setup() {
  size(500, 500);
  font0 = createFont("Arial", 50);
  font = createFont("標楷體", 50);
  font2 = createFont("elffont-rock.otf", 50);
}//println(PFont.list());//印出現在系統能用的所有字型
void draw() {
  background(0);
  textSize(50);

  textFont(font0);
  text("Hello", 50, 50);
  textFont(font);
  text("中文看到了", 50, 150);
  
  PFont font2 = createFont("elffont-rock.otf", 50);
  textFont(font2);
  text("ㄇㄉㄈㄎ", 50, 250);
}
week09_03_processing_sound_SoundFile_sound_new_SoundFile
要來處理如何將音樂放進processing裡面並且撥放
import processing.sound.*;
SoundFile sound;

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

}
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();
}
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
要來模擬ninjakeyboard,音樂打鍵遊戲,先製作出背景,和會跳躍的蘋果
PImage board;
void setup() {
  size(600, 400);
  board = loadImage("board.png");
}
float appleX = 100, appleY = 500, appleVX = 3, 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) {
    appleX = 100; appleY = 500; appleVX = 5; appleVY = -30;
  }
}

week09_06_keyboard_ninja03_void_randomApple
開始讓蘋果的出現頻率可以出現,利用random的性質
PImage board;
void setup() {
  size(600, 400);
  board = loadImage("board.png");
}
float appleX = 100, appleY = 500, appleVX = 3, 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>500) {
    randomApple();
  }
}
week09_07_keyboard_ninja04_void_keyPressed_appleKey
準備在蘋果上面加上26個英文字母,如果在落下前打鍵成功,就加分數。
PImage board;
void setup() {
  size(600, 400);
  board = loadImage("board.png");
  randomApple();
}
float appleX = 100, appleY = 500, appleVX = 3, 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>500) {
    randomApple();
  }
}
week09_08_keyboard_ninja05_start_3_2_1_go
加入開始鍵和倒數開始,讓玩家可以自行決定何時開始遊戲。
PImage board;
void setup() {
  size(600, 400);
  board = loadImage("board.png");
  randomApple();
}
float appleX = 100, appleY = 500, appleVX = 3, 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;
  if (state==2) {
    if (key==appleKey) {
      score+= 100;
    } else {
      score -= 20;
    }
  }
}
int state = 0;
int countdown = 60*4;
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>500) {
      randomApple();
    }
  }
}



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, "In Game Music.mp3");
  sound2 = new SoundFile(this, "Gong.mp3");
  sound3 = new SoundFile(this, "Intro Song_Final.mp3");
  sound1.play();//撥放一次
}
float appleX = 100, appleY = 500, appleVX = 3, 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;
  if (state==2) {
    if (key==appleKey) {
      score+= 100;
    } else {
      score -= 20;
    }
  }
}
int state = 0;
int countdown = 60*4;
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();
    sound2.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>500) {
      randomApple();
    }
  }
}

















沒有留言:

張貼留言