聲音、音效、音樂(WAV檔)
- 先開啟GLUT專案
- 把程式碼都刪掉
- 上網下載任一WAV檔音樂,將音樂放到freeglut裡的bin
- 輸入以下程式碼:
#include <windows.h>
#include <mmsystem.h>
int main()
{
PlaySoundA("
madmoo.wav", NULL, SND_SYNC);
}
#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
void display()
{
}
void keyboard(unsigned char key, int x, int y)
{
if(key=='1') PlaySoundA("do.wav", NULL, SND_ASYNC);
if(key=='2') PlaySoundA("re.wav", NULL, SND_ASYNC);
if(key=='3') PlaySoundA("mi.wav", NULL, SND_ASYNC);
if(key=='4') PlaySoundA("fa.wav", NULL, SND_ASYNC);
if(key=='5') PlaySoundA("so.wav", NULL, SND_ASYNC);
if(key=='6') PlaySoundA("la.wav", NULL, SND_ASYNC);
if(key=='7') PlaySoundA("si.wav", NULL, SND_ASYNC);
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("07161045");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
}
聲音、音效、音樂(MP3檔)
- 先到Moodle下載老師給的"CMP3_MCI.h",可讓電腦播MP3/WMA 音檔
- 將"CMP3_MCI.h"拉至桌面程式碼所在的資料夾裡
- 上網下在任一首mp3,拉至freeglut裡的bin
- 程式碼如下:
#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h"
CMP3_MCI mp3;
void display()
{
}
void keyboard(unsigned char key, int x, int y)
{
if(key=='1') PlaySoundA("do.wav", NULL, SND_ASYNC);
if(key=='2') PlaySoundA("re.wav", NULL, SND_ASYNC);
if(key=='3') PlaySoundA("mi.wav", NULL, SND_ASYNC);
if(key=='4') PlaySoundA("fa.wav", NULL, SND_ASYNC);
if(key=='5') PlaySoundA("so.wav", NULL, SND_ASYNC);
if(key=='6') PlaySoundA("la.wav", NULL, SND_ASYNC);
if(key=='7') PlaySoundA("si.wav", NULL, SND_ASYNC);
}
int main(int argc, char**argv)
{
mp3.Load("twice.mp3");
mp3.Play();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("07161045");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
}

#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h"
CMP3_MCI mp3;
CMP3_MCI Do, Re, Mi, Fa, So;
void display()
{
}
void keyboard(unsigned char key, int x, int y)
{
if(key=='1')
Do.Play();///PlaySoundA("do.wav", NULL, SND_ASYNC);
if(key=='2')
Re.Play();///PlaySoundA("re.wav", NULL, SND_ASYNC);
if(key=='3')
Mi.Play();///PlaySoundA("mi.wav", NULL, SND_ASYNC);
if(key=='4')
Fa.Play();///PlaySoundA("fa.wav", NULL, SND_ASYNC);
if(key=='5')
So.Play();///PlaySoundA("so.wav", NULL, SND_ASYNC);
}
int main(int argc, char**argv)
{
Do.Load("do.wav");Re.Load("re.wav");Mi.Load("mi.wav");Fa.Load("fa.wav");So.Load("so.wav");
mp3.Load("twice.mp3");
mp3.Play();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("07161045");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
}
- 將freeglut裡bin的資料拉至桌面程式碼所在的資料夾裡

- 再把"week12_07161045.cbp"用notepad++開啟,將兩個地方雙引號內改為"."

- 利用程式碼讓球碰到牆壁回彈,碰到牆壁發出Do、Re、Mi、Fa、So的聲音
- 再加上滑鼠程式碼(槍聲)
- 程式碼如下:
#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h"
CMP3_MCI mp3;
CMP3_MCI Do, Re, Mi, Fa, So;
float ballX=0, ballY=0, dx=0.05, dy=0.03;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(ballX, ballY, 0);
glutSolidSphere(0.1, 30, 30);
glPopMatrix();
glutSwapBuffers();
}
void timer(int t)
{
glutTimerFunc(50, timer, t+1);
ballX+=dx; ballY+=dy;
if(ballX>=1)
{
Do.Play(); dx= -dx;
}
if(ballX<=-1)
{
Re.Play(); dx= -dx;
}
if(ballY>=1)
{
Mi.Play(); dy= -dy;
}
if(ballY<=-1)
{
Fa.Play(); dy= -dy;
}
glutPostRedisplay();
}
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN) PlaySoundA("bar.wav", NULL, SND_ASYNC);
}
void keyboard(unsigned char key, int x, int y)
{
if(key=='1') PlaySoundA("do.wav", NULL, SND_ASYNC);
if(key=='2') PlaySoundA("re.wav", NULL, SND_ASYNC);
if(key=='3') PlaySoundA("mi.wav", NULL, SND_ASYNC);
if(key=='4') PlaySoundA("fa.wav", NULL, SND_ASYNC);
if(key=='5') PlaySoundA("so.wav", NULL, SND_ASYNC);
if(key=='6') PlaySoundA("la.wav", NULL, SND_ASYNC);
if(key=='7') PlaySoundA("si.wav", NULL, SND_ASYNC);
}
int main(int argc, char**argv)
{
mp3.Load("twice.mp3");
mp3.Play();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("07161045");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutTimerFunc(50, timer, 0);
glutMouseFunc(mouse);
glutMainLoop();
}

沒有留言:
張貼留言