筆記
Step1-1 PlaySound() 更詳細解說
0. File-New-Empty File,存成 week15-1_PlaySound.cpp
1. //#include <mmsystem.h> 上週教的
2. #inlcude <windows.h> 本週改這
3. //PlaySound("檔名wav", NULL , SND_ASYNC); //上週 不等待/不同步
4. PlaySound ("檔名.wav", NULL , SND_SNYC); //本週、等待、同步
5. 注意工作執行目錄 working_dir (in C:\ . . . . .)
#include <windows.h>
#include <stdio.h>
int main()
{
printf("PlaySound()之前\n");
PlaySound("badbad.wav", NULL, SND_SYNC);
printf("PlaySound()之後\n");
}
但執行錯誤,因還沒有在settings->compiler加入winmm
https://sound-effects.bbcrewind.co.uk/search 尋找想要的wav檔
下載後移到執行資料夾
Step1-2 PlaySound()
1.File-New-empty File再改檔名.cpp
2. 寫入
#include <windows.h>
#include <stdio.h>
int main(){
PlaySound("do.wav",NULL,SND_SYNC);///ASYNC不等待
PlaySound("re.wav",NULL,SND_SYNC);
PlaySound("mi.wav",NULL,SND_SYNC);
}
3. wav檔移到執行資料夾
4. 記得寫成SYNC(寫ASYNC若不等待會出錯
#include <windows.h>
#include <stdio.h>
int main(){
PlaySound("NHU05082251.wav",NULL,SND_ASYNC);///不等待執行較快,適合互動
while(1){
printf("輸入數字: ");
int N;
scanf("%d",&N);
if(N==1)PlaySound("do.wav",NULL,SND_SYNC);///ASYNC不等待
if(N==2)PlaySound("re.wav",NULL,SND_SYNC);
if(N==3)PlaySound("mi.wav",NULL,SND_SYNC);
}
}
Step2-1 WAV(大/原始) vs. MP3(小/有壓縮)
PlaySound()只能用大/原始的WAV檔,只要1行
MP3檔比較麻煩,很多行。
Moodle可下載 CMP3_MCI.h
0. File-New-Empty File,week15-3_mp3.cpp
1. 在Moodle 下載 CMP3_MCT.h放在同目錄
2. 程式碼 #include "CMP3_MCT.h "
3. 宣告 CMP3_MCI mp3;
4. mp3.Load("檔名.mp3");
5. mp3.Play();
#include <stdio.h>
#include "CMP3_MCI.h"
CMP3_MCI mp3;
int main ()
{
mp3.Load("07071034.wav");
mp3.Play();
printf("輸入數字程式卡住");
int N;
scanf("%d",&N);
}
Step2-2 接續上周的進度加強印象,將動畫相關的動作編輯進行改良。
接續上周的week14_angles_TRT_write_and_read
0. File-New-Project ,GLUT專案, week15_angles_TRT_again
1. copy 上周的程式碼,改成 week15_angles並試跑: mouse motion, keyboard '0' '1' '2' '3' 換關 節,最後案 'r' 長按,可慢慢讀入資料
2. 發現問題: 不像動畫,只是拉某一個關節(很慢)
3. mrWrite() 會寫一行, myRead()會讀一行
4. 不能把myWrite() 放 motion
5. 把動作對應的關節全部調好後,才存動作
6. 擺好動作時,按 's' 存動作
7. 執行時,存幾個動作, 'r' 可讀入
8. 事後在工作執行目錄 file.txt 可以大量copy 動作,重複,再重新跑程式
Step3-1 機器人擺動作
1. 需要 3D Model(glm.h / glm.cpp) (.obj / .mtl / .jpg ...)
2. 把模型切成很多塊(因整塊就無法擺動關節) 分別讀入
3. TRT的程式,才能轉動
4. keyboard() 切換關節, mouse motion() 轉動那一個關節
(1) File-New-Project ,GLUT 專案,week15_hw_gundam_parts
(2) 工作執行目錄 working_dir不太好,要改
(3) 用 Notepad++把week15_hw_gundam_parts.cbp(CodeBlocks Project)改裡面的working_dir
(4) 把glm.h、glm.cpp、gundam的data目錄,全部放在程式目錄
(5) 在CodeBlocks左邊
沒有留言:
張貼留言