/*今天的部落格有小彩蛋喔*/
目標1:用1行播放WAV檔(PlaySound)
▼▼▼▼▼▼▼以下祭品▼▼▼▼▼▼▼▼
#include <windows.h>
#include <mmsystem.h>
int main()
{///播聲音 正常ASCII檔名,空,聲音要同步
PlaySoundA("Hahaha.wav",NULL,SND_SYNC);
}///檔案要放在freeglut/bin裡面
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
目標2:小鍵盤
可以自己隨時播放想要的音效了ヽ(✿゚▽゚)ノ

▼▼▼▼▼▼▼以下祭品▼▼▼▼▼▼▼▼
#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);
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("week12");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);///鍵盤函式
glutMainLoop();
}
目標2:小鍵盤
可以自己隨時播放想要的音效了ヽ(✿゚▽゚)ノ
▼▼▼▼▼▼▼以下祭品▼▼▼▼▼▼▼▼
#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);
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("week12");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);///鍵盤函式
glutMainLoop();
}
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
目標3:播放mp3
*要記得把老師給的檔案丟進去目前的專案資料夾喔
*不丟進去會無讀取mp3喔 ε٩(๑> ₃ <)۶з


▼▼▼▼▼▼▼以下祭品▼▼▼▼▼▼▼▼
#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=='0') PlaySoundA("pig.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("week12");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);///鍵盤函式
glutMainLoop();
}
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
目標4:做出合弦音
剛剛所做的鍵盤一次只能按一個音(╥﹏╥)
因為PlaySound是一個古老的函式,所以...

▼▼▼▼▼▼▼以下祭品▼▼▼▼▼▼▼▼
#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h" //雙引號:在專案同一個目錄裡
CMP3_MCI mp3;//宣告一個物件變數
CMP3_MCI Do, Re, Mi, Fa, So;///宣告5變數
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("music.mp3");
///mp3.Play();///先不要播放mp3
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("week12");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);//鍵盤函式
glutMainLoop();
}
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
目標5:CodeBlocks專案檔&目錄
把C:/......改掉 --> .
" . "代表目前檔案位置
記得把原本的檔案都丟到目前的專案資料夾去
不然會跑不出來喔 (^_っ^)



這個沒有程式碼喔
真是難得 ε٩(๑> ₃ <)۶з
目標6:綜合以上的練習
感謝小葉老師送給我們---超級最終版.cpp



真的太多了,回家在寫///再啦ㄍㄢˋ
▼▼▼▼▼▼▼以下祭品▼▼▼▼▼▼▼▼
#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;///ballX會加上dx, ballY會加上dy
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: 用timer
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();
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("music.mp3");
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("week12 sound");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutTimerFunc(50, timer, 0);///TODO6
glutMouseFunc(mouse);///TODO6
glutMainLoop();
}
目標3:播放mp3
*要記得把老師給的檔案丟進去目前的專案資料夾喔
*不丟進去會無讀取mp3喔 ε٩(๑> ₃ <)۶з
▼▼▼▼▼▼▼以下祭品▼▼▼▼▼▼▼▼
#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=='0') PlaySoundA("pig.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("week12");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);///鍵盤函式
glutMainLoop();
}
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
目標4:做出合弦音
剛剛所做的鍵盤一次只能按一個音(╥﹏╥)
因為PlaySound是一個古老的函式,所以...
▼▼▼▼▼▼▼以下祭品▼▼▼▼▼▼▼▼
#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h" //雙引號:在專案同一個目錄裡
CMP3_MCI mp3;//宣告一個物件變數
CMP3_MCI Do, Re, Mi, Fa, So;///宣告5變數
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("music.mp3");
///mp3.Play();///先不要播放mp3
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("week12");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);//鍵盤函式
glutMainLoop();
}
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
目標5:CodeBlocks專案檔&目錄
把C:/......改掉 --> .
" . "代表目前檔案位置
記得把原本的檔案都丟到目前的專案資料夾去
不然會跑不出來喔 (^_っ^)
這個沒有程式碼喔
真是難得 ε٩(๑> ₃ <)۶з
目標6:綜合以上的練習
感謝小葉老師送給我們---超級最終版.cpp
真的太多了,回家在寫///再啦ㄍㄢˋ
▼▼▼▼▼▼▼以下祭品▼▼▼▼▼▼▼▼
#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;///ballX會加上dx, ballY會加上dy
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: 用timer
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();
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("music.mp3");
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("week12 sound");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutTimerFunc(50, timer, 0);///TODO6
glutMouseFunc(mouse);///TODO6
glutMainLoop();
}
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
偷偷跟老師抱怨一下
我覺得"傳送檔案"的功能,真的很煩
因為每次傳送完成,就會切換原本的視窗
導致部落格要一直重新打字,好討厭
偷偷跟老師抱怨一下
我覺得"傳送檔案"的功能,真的很煩
因為每次傳送完成,就會切換原本的視窗
導致部落格要一直重新打字,好討厭
沒有留言:
張貼留言