1. 聲音
1. 下載一個WAV
2. 打開CodeBlocks
3. 開新Project (Console Application)
4. 把完來的程式碼刪掉
6. 加入一個winmm的library
5. 改成以下的程式碼
#include<windows.h>
#include<mmsystem.h> ///裏面有聲音的函式
///上面兩行不能交換!!!!
int main()
{
PlaySoundA("C:\\Users\\user\\Downloads\\bubbs.wav",NULL,SND_SYNC);
///播放音樂 ( 檔名 ,沒有人,SoundSync )
}
SND_SYNC: 同步播放 , 會一個一個等他慢慢播
SND_ASYNC: 不同步, 可能程式碼會先結束
C語言裏 , //=/
兩行就會執行兩次
6. 聲音就會跑出來
2. 主題: 鍵盤 聲音 音樂WAV MP3
1. 先載入freeglut (跟第一週一樣)
1. Google search "freeglut windows"
2. 從Transmission Zero 下載 "freeglut 3.0.0 MinGW Package"
2. 從Transmission Zero 下載 "freeglut 3.0.0 MinGW Package"
3. 解壓縮後放到桌面
4. 在lib複製一個"libfreeglut.a"命名為"libglut32.a"
5. CodeBlocks 開
6. File -> New -> Project -> GLUT Project
7. 把location改成"C:\Users\user\Desktop\freeglut"
2. 加入兩行程式碼
#include <mmsystem.h>
PlaySoundA("C:\\Users\\user\\Downloads\\bubbs.wav",NULL,SND_SYNC);
...
const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
/* Program entry point */
#include <mmsystem.h>
int main(int argc, char *argv[])
{
PlaySoundA("C:\\Users\\user\\Downloads\\bubbs.wav",NULL,SND_SYNC);
glutInit(&argc, argv);
glutInitWindowSize(640,480);
glutInitWindowPosition(10,10);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutReshapeFunc(resize);
glutDisplayFunc(display);
glutKeyboardFunc(key);
glutIdleFunc(idle);
...
3. **不用加library 因為裏面內置了
4. 會先跑音樂再跑紅色的3DObject
5. 在Key的函式裏加程式碼(do re mi ...)
if(key=='1') PlaySoundA("C:\\Users\\user\\Downloads\\do.wav",NULL,SND_SYNC);
if(key=='2') PlaySoundA("C:\\Users\\user\\Downloads\\re.wav",NULL,SND_SYNC);
if(key=='3') PlaySoundA("C:\\Users\\user\\Downloads\\mi.wav",NULL,SND_SYNC);
if(key=='4') PlaySoundA("C:\\Users\\user\\Downloads\\fa.wav",NULL,SND_SYNC);
if(key=='5') PlaySoundA("C:\\Users\\user\\Downloads\\so.wav",NULL,SND_SYNC);
...
glPushMatrix();
glTranslated(2.4,-1.2,-6);
glRotated(60,1,0,0);
glRotated(a,0,0,1);
glutWireTorus(0.2,0.8,slices,stacks);
glPopMatrix();
glutSwapBuffers();
}
#include <mmsystem.h>
static void key(unsigned char key, int x, int y)
{
if(key=='1') PlaySoundA("C:\\Users\\user\\Downloads\\do.wav",NULL,SND_SYNC);
if(key=='2') PlaySoundA("C:\\Users\\user\\Downloads\\re.wav",NULL,SND_SYNC);
if(key=='3') PlaySoundA("C:\\Users\\user\\Downloads\\mi.wav",NULL,SND_SYNC);
if(key=='4') PlaySoundA("C:\\Users\\user\\Downloads\\fa.wav",NULL,SND_SYNC);
if(key=='5') PlaySoundA("C:\\Users\\user\\Downloads\\so.wav",NULL,SND_SYNC);
switch (key)
{
case 27 :
case 'q':
exit(0);
break;
case '+':
...
***但按鍵盤的時候會卡住 (因為SND_SYNC) 所以要改成 SND_ASYNC
6. 改成SND_ASYNC (不會卡 按很快)
if(key=='1') PlaySoundA("C:\\Users\\user\\Downloads\\do.wav",NULL,SND_ASYNC);
if(key=='2') PlaySoundA("C:\\Users\\user\\Downloads\\re.wav",NULL,SND_ASYNC);
if(key=='3') PlaySoundA("C:\\Users\\user\\Downloads\\mi.wav",NULL,SND_ASYNC);
if(key=='4') PlaySoundA("C:\\Users\\user\\Downloads\\fa.wav",NULL,SND_ASYNC);
if(key=='5') PlaySoundA("C:\\Users\\user\\Downloads\\so.wav",NULL,SND_ASYNC);
...
glPushMatrix();
glTranslated(2.4,-1.2,-6);
glRotated(60,1,0,0);
glRotated(a,0,0,1);
glutWireTorus(0.2,0.8,slices,stacks);
glPopMatrix();
glutSwapBuffers();
}
#include <mmsystem.h>
static void key(unsigned char key, int x, int y)
{
if(key=='1') PlaySoundA("C:\\Users\\user\\Downloads\\do.wav",NULL,SND_ASYNC);
if(key=='2') PlaySoundA("C:\\Users\\user\\Downloads\\re.wav",NULL,SND_ASYNC);
if(key=='3') PlaySoundA("C:\\Users\\user\\Downloads\\mi.wav",NULL,SND_ASYNC);
if(key=='4') PlaySoundA("C:\\Users\\user\\Downloads\\fa.wav",NULL,SND_ASYNC);
if(key=='5') PlaySoundA("C:\\Users\\user\\Downloads\\so.wav",NULL,SND_ASYNC);
switch (key)
{
case 27 :
case 'q':
exit(0);
break;
case '+':
...
7. 下載 "CMP3_MCI.h"
8. 放到CodeBlocks 專案的資料夾
9. 加播放MP3的程式碼
#include "CMP3_MCI.h"
CMP3_MCI myMP3;
myMP3.Load("C:\\Users\\user\\Downloads\\bubbs.wav");
myMP3.Play();
...
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
/* Program entry point */
#include "CMP3_MCI.h"
#include <mmsystem.h>
CMP3_MCI myMP3;
int main(int argc, char *argv[])
{
myMP3.Load("C:\\Users\\user\\Downloads\\bubbs.wav");
myMP3.Play();
glutInit(&argc, argv);
glutInitWindowSize(640,480);
glutInitWindowPosition(10,10);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutReshapeFunc(resize);
glutDisplayFunc(display);
...
3. 複習: 階層 T-R-T 骨架
4. 作業:能操控的機器人
沒有留言:
張貼留言