上一周期中考啦哈哈
------------------------------------------------------------------------------------------
這周教添加音樂
0.資料夾裡先放這些檔案
0-1 路徑C:\Users\Administrator\Desktop\freeglut\bin
0-2路徑C:\Users\Administrator\Desktop\week10-1 (專案資料夾裡)
1.開啟GLUT專案
2.添加程式碼PlaySound("檔案名稱.wav(ˇ只能使用wav檔)",空指標,執行模式);
#include <windows.h>
#include <stdio.h>
int main()
{
PlaySound("2020-12-1-14-59-3-165-nf1.wav",NULL,SND_SYNC);
}
這樣可以自動播放 2020-12-1-14-59-3-165-nf1.wav
3.添加程式碼
#include <windows.h>
#include <stdio.h>
int main()
{
PlaySound("do.wav",NULL,SND_ASYNC);
PlaySound("re.wav",NULL,SND_ASYNC);
PlaySound("mi.wav",NULL,SND_ASYNC);
PlaySound("fa.wav",NULL,SND_ASYNC);
PlaySound("so.wav",NULL,SND_ASYNC);
}
這樣會依序播放do,re,mi.,fa,so但整個程式執行會很冗長
4.修改程式碼為以下
while(1){
char c=getchar();
if(c=='z')PlaySound("do.wav",NULL,SND_ASYNC);
if(c=='x')PlaySound("re.wav",NULL,SND_ASYNC);
if(c=='c')PlaySound("mi.wav",NULL,SND_ASYNC);
if(c=='v')PlaySound("fa.wav",NULL,SND_ASYNC);
if(c=='b')PlaySound("so.wav",NULL,SND_ASYNC);
}
這樣會按下按鍵後Enter播放對應音檔,並且後按的會蓋過前面的
俗稱鋼琴
5.修改程式碼為以下
#include <stdio.h>
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}
void keyboard(unsigned char c,int x,int y)
{
if(c=='z') PlaySound("do.wav",NULL,SND_ASYNC);
if(c=='x') PlaySound("re.wav",NULL,SND_ASYNC);
if(c=='c') PlaySound("mi.wav",NULL,SND_ASYNC);
if(c=='v') PlaySound("fa.wav",NULL,SND_ASYNC);
if(c=='b') PlaySound("so.wav",NULL,SND_ASYNC);
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("小乖的鋼琴");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
}
這樣就解決每次都要Enter才會播放的問題,變成按下按鍵就會自動播放
6.修改程式碼為以下
#include <windows.h>
#include <stdio.h>
#include <GL/glut.h>
#include "CMP3_MCI.h"
CMP3_MCI mp3;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}
void keyboard(unsigned char c,int x,int y)
{
if(c=='z') PlaySound("do.wav",NULL,SND_ASYNC);
if(c=='x') PlaySound("re.wav",NULL,SND_ASYNC);
if(c=='c') PlaySound("mi.wav",NULL,SND_ASYNC);
if(c=='v') PlaySound("fa.wav",NULL,SND_ASYNC);
if(c=='b') PlaySound("so.wav",NULL,SND_ASYNC);
}
int main(int argc,char** argv)
{
mp3.Load("music.mp3");
mp3.Play();
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("小乖的鋼琴");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
}
這樣就能在有背景音樂的狀態下彈鋼琴
7.修改程式碼為以下
#include <windows.h>
#include <stdio.h>
#include <GL/glut.h>
#include "CMP3_MCI.h"
CMP3_MCI mp3;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}
void keyboard(unsigned char c,int x,int y)
{
if(c=='z') PlaySound("do.wav",NULL,SND_ASYNC);
if(c=='x') PlaySound("re.wav",NULL,SND_ASYNC);
if(c=='c') PlaySound("mi.wav",NULL,SND_ASYNC);
if(c=='v') PlaySound("fa.wav",NULL,SND_ASYNC);
if(c=='b') PlaySound("so.wav",NULL,SND_ASYNC);
}
void Mouse(int button,int state,int x,int y)
{
if(state==GLUT_DOWN)PlaySound("shot.wav",NULL,SND_ASYNC);
}
int main(int argc,char** argv)
{
mp3.Load("music.mp3");
mp3.Play();
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("小乖的鋼琴");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMouseFunc(Mouse);
glutMainLoop();
}
這樣就能在有背景音樂的狀態下邊彈鋼琴邊射擊
8.修改程式碼為以下
#include <windows.h>
#include <stdio.h>
#include <GL/glut.h>
#include "CMP3_MCI.h"
CMP3_MCI mp3;
CMP3_MCI shot1,shot2,shot3;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}
void keyboard(unsigned char c,int x,int y)
{
if(c=='z') PlaySound("do.wav",NULL,SND_ASYNC);
if(c=='x') PlaySound("re.wav",NULL,SND_ASYNC);
if(c=='c') PlaySound("mi.wav",NULL,SND_ASYNC);
if(c=='v') PlaySound("fa.wav",NULL,SND_ASYNC);
if(c=='b') PlaySound("so.wav",NULL,SND_ASYNC);
}
void Mouse(int button,int state,int x,int y)
{
if(state==GLUT_DOWN&&button==GLUT_LEFT_BUTTON)shot1.Play();
if(state==GLUT_DOWN&&button==GLUT_MIDDLE_BUTTON)shot2.Play();
if(state==GLUT_DOWN&&button==GLUT_RIGHT_BUTTON)shot3.Play();
}
int main(int argc,char** argv)
{
shot1.Load("1.mp3");shot2.Load("2.mp3");shot3.Load("3.mp3");
mp3.Load("music.mp3");
mp3.Play();
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("小乖的鋼琴");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMouseFunc(Mouse);
glutMainLoop();
}
這樣就能在有背景音樂的狀態下邊彈鋼琴邊用三種武器射擊









沒有留言:
張貼留言