2022年10月24日 星期一

ʕ •ᴥ•ʔ week08

 


2022互動技術筆記

Week08 2022-10-24

1. 打字遊戲、水果忍者/鍵盤忍者
2. 

3. 





主題:複習上週播聲音

1.開啟新檔存檔:week08_1_play_sound
2.在學校要重新下載音樂外掛(程式素描本/使用函式庫/Manage Libraries)
3.和上禮拜一樣到上周moodle的網址,然後改網址下載mp3
4.然後將兩個音檔: In Game Music.mp3 / Intro Song_Final.mp3 拉進去
5.按 ctrl-K 可以確認有沒有出現data資料夾有兩個音檔
6.程式碼: 記得加void draw(){}不然聽不到音樂


主題:不同舞台播不同音樂

1.開啟新檔存檔:week08_2_play_sounds_stages
2.然後將兩個音檔: In Game Music.mp3 / Intro Song_Final.mp3 拉進去
3.按 ctrl-K 可以確認有沒有出現data資料夾有兩個音檔
4.目標: 
       執行時出現stage1然後播"In Game Music.mp3"
       滑鼠點擊:stage1音樂停止且切換到stage2然後播"Intro Song_Final.mp3"
       再點擊又可以stage2音樂停止切換到stage1然後播"In Game Music.mp3"
       點擊滑鼠可以不斷切換stage1+音樂和stage2+音樂
5.程式碼:


6.簡化程式碼,了解切換舞台的運作
  開啟新檔存檔:week08_3_simple_stage1_stage2
  目標: 點擊滑鼠切換stage1和stage2 (製作遊戲切換關卡的概念)


主題:消掉飛起來的水果

1.開啟新檔存檔:week08_4_fruit_flying_keyboard_pressed
  小目標:有個水果飛起來,按下按鍵讓水果停在原地
  使用boolean變數 flying 表示水果是否有在飛的狀態
  變數 fruitVX 和 fruitVX 讓正在飛的水果位置可以改變
  keyPressed函式:按下任意鍵盤按鍵讓水果停下來


2.但是這個在飛的水果,並不像水果忍者的水果飛行的樣子,所以繼續改良程式碼
  目標: 讓水果飛行可以像水果忍者那樣從下面往上拋物線飛出來,按下按鍵就重新在飛一顆水果出來
  因為要做拋物線飛出來的感覺所以要給重力加速度 fruitVY += 0.98/3;
  給一個fruitReset函式:
    水果x座標隨機從100~300之間出現往上飛出來、水果y座標固定高度300
    fruitVX水果速度隨機-2~+2之間,fruitVY=-13回復原本的速度
    按下按鍵(因為這個函式寫在keyPressed函式裡)就繼續重飛 flying=true;



主題:消掉飛起來的水果

問:原本做一顆水果就要寫那麼多程式碼,那遊戲需要用到源源不絕的水果要怎麼解決?
答:所以用一個很酷的東西 class物件 來創造圓圓不絕的水果

1.發明一個class物件,他會準備好當需要產生一個新的水果時,所需的值(水果座標、水果速度、布林值...)
  和函式(reset函式、產生新的就要在做的update函式)
  當需要產生新水果時,就能夠即時更新產生新水果時需要做的那些事情


2.程式碼看起來好多,有沒有看起來更精簡的辦法?
  有:另存新檔然後在檔名旁的小箭頭點下去,按新增分頁,取名Fruit


  將class Fruit全部程式碼貼到新增分頁Fruit裡

  主程式:week08_7_fruit_class_tabs 只留這些
  從此之後產生新水果的事都放在分頁那,主程式就做主程式要做的,程式碼看起來清爽


3.目標: 有三顆印著隨機對應字母的水果會拋物線飛出來,鍵盤按下的字母如果有對應到印在水果上的字母,這個水果要消掉,然後飛出來新的水果 (沒按到對應字母的話 以後再寫)

在分頁Fruit: 要建一個放26個字母的字串 > String line="ABC....
            放水果對應的字母 > char c 
            i 從26個字母隨機取一個出來 >  int i = int(random(26));
            再放到 c 裡 > c = line.charAt(i); 
            
在主程式week08_7_fruit_class_tabs: 
   給Fruit陣列,這樣就可以放好多水果
   用一個for迴圈放3顆水果
   讓水果上面印隨機取到的字母
   在keyPressed函式裡:如果鍵盤按下的字母和水果上的字母一樣,就消掉原本的更新另一顆新的水果


分頁Fruit程式碼:

主程式week08_7_fruit_class_tabs程式碼:

沒有留言:

張貼留言