2020年5月13日 星期三

Week12

Week12



首先跟以往一樣去下載freeglut然後開啟Code:Block專案,然後把裡面的程式碼全刪,自己寫一個新的程式碼(如下)
#include <windows.h>
#include <mmsystem.h>
int main()
{
    PlaySoundA("Queen.wav", NULL, SND_SYNC);
}



接著在去網路抓下來一個WAV音檔,把WAV音檔放進去freeglut資料夾裡面的bin即可

--------------------------------------------------------------------------------------------------------------------------

接著寫一個可以用兩個音樂以上的程式碼,而且可以不用等第一個播完,可以使用鍵盤123數字鍵去控制想播的音階(程式碼如下)

#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("se.wav",NULL,SND_ASYNC);


}
int main(int argc,char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week12 sound");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    glutMainLoop();
}




--------------------------------------------------------------------------------------------------------------------------
使用完wav檔我們改成使用map3,首先先去youtube載一首歌下來,然後稍微修改上面的程式碼(程式碼如下)


#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);



}
int main(int argc, char**argv)
{
    mp3.Load("123.mp3");
    mp3.Play();
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week12 sound");
    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();
    if(key=='2')Re.Play();
    if(key=='3')Mi.Play();
    if(key=='4')Fa.Play();
    if(key=='5')So.Play();



}
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("123.mp3");
    mp3.Play();
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week12 sound");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    glutMainLoop();
}

--------------------------------------------------------------------------------------------------------------------------



去修改這個禮拜做的glut檔的位子,修改第11跟21行的程式碼,把位子改成"."即可

再來把所有檔案都丟進去這禮拜的glut檔裡面



用程式碼創一個球,那個球碰到邊就會往另一個方向移動,按滑鼠會有槍聲


#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h" /// TODO3: ?????典?獢?銝€??ㄐ
CMP3_MCI mp3;///ex. int a; TODO3: 摰??銝€?隞嗉?????mp3
CMP3_MCI Do, Re, Mi, Fa, So; ///TODO4: ???隞嗉???

float ballX=0, ballY=0, dx=0.05, dy=0.03;///ballX??銝x, ballY??銝y
void display()
{///?單?: ?臭??臭誑?€??....?€?,??靘???
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();///TODO6: ?遢
        glTranslatef(ballX, ballY, 0);///TODO6: 蝘餃ballX,ballY
        glutSolidSphere(0.1, 30,30);///TODO6:??
    glPopMatrix();///TODO6:??
    glutSwapBuffers();
}
void timer(int t)///TODO6: timer
{
    glutTimerFunc(50, timer, t+1);///TODO6: ?系imer
    ballX+=dx; ballY+=dy;///TODO6: ????
    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();///TODO6: ??恍
}
void mouse(int button, int state, int x, int y)///TODO6: mouse??瑽
{
    if(state==GLUT_DOWN) PlaySoundA("shot.wav", NULL, SND_ASYNC);
}
void keyboard(unsigned char key, int x, int y)
{                                 //銝??郊,銝?蝯?,蝜潛?
    if(key=='1') Do.Play();///TODO4 PlaySoundA("do.wav",NULL,SND_ASYNC);
    if(key=='2') Re.Play();///TODO4//PlaySoundA("re.wav",NULL,SND_ASYNC);
    if(key=='3') Mi.Play();///TODO4//PlaySoundA("mi.wav",NULL,SND_ASYNC);
    if(key=='4') Fa.Play();///TODO4//PlaySoundA("fa.wav",NULL,SND_ASYNC);
    if(key=='5') So.Play();///TODO4//PlaySoundA("so.wav",NULL,SND_ASYNC);
}///TODO4: 銝??撘? ?曉?臭誑??撘?(ex. Do+Mi+So => ?芣??€?箔?...)
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");///TODO4: 5?隞嗉???閮剖末瑼?
    mp3.Load("music.mp3");///TODO3:
    ///mp3.Play();///TODO3:
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("week12 sound");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);///TODO2:?萇?撘?
    glutTimerFunc(50, timer, 0);///TODO6
    glutMouseFunc(mouse);///TODO6
    glutMainLoop();
}

沒有留言:

張貼留言