簡體   English   中英

如何在我的 C++ Windows 游戲中播放聲音?

[英]How do i play sound in my C++ Windows Game?

Windows 7 Ultimate 64Bit,我使用的是 CodeBlocks 16.01。 我正在處理我的 OpenGL 大學項目,當玩家使用“空格鍵”鍵射擊時,我試圖添加槍聲效果。

聲音僅在我創建控制台項目或空項目時有效並且聲音播放得很好,我知道我必須鏈接的庫“winmm.lib”,它作為控制台項目工作得很好,這是代碼。

#include <iostream>
#include <windows.h>
#include <mmsystem.h>

using namespace std;

int main()
{
    PlaySound("shotgun.wav",NULL,SND_SYNC);
    return 0;
}

當我現在在我的 Glut 項目中使用此代碼時,問題就開始了,當按下射擊按鈕“空格鍵”時,它會播放一種稱為“默認嗶嗶聲”的 Windows 系統聲音,而不是播放“shotgun.wav”。 游戲在聲音完成之前凍結了幾秒鍾,但是我通過將上面的 thw 替換為這個問題來解決這個問題:

PlaySound(TEXT("shotgun.wav"), NULL, SND_FILENAME | SND_ASYNC);

它不再凍結,但仍然繼續播放 Windows 系統聲音而不是 shotgun.wav。 .wav 文件在項目中,我很確定它在正確的位置。 這是我的 Glut 項目中的拍攝代碼示例(我只復制了相關的代碼段):

void Keys(unsigned char key, int x, int y) {
key = tolower(key); //Just in case CAPS LOCK is ON.

    if(key==27)
        exit(0); //Escape key, Exit the game

    switch(key){ 
    case ' ':  //SPACE BAR

            /* some code here */

            PlaySound(TEXT("shotgun.wav"), NULL, SND_FILENAME | SND_ASYNC);
        break; //.....Code continues to the next case....

要強制使用槍聲效果,我必須轉到 Windows 聲音設置和“更改系統聲音”,哈哈,是的,我實際上必須用我的“Shotgun.wav”替換“默認嗶嗶聲”,然后我返回游戲並編譯,和哇啦! 它正在工作。 但是,這當然不是我想要的,因為顯然這只能在我的 PC 上運行,而我們不希望那樣。

您需要指定完整的文件路徑。 在兩者之間使用雙斜杠\\\\ 例如:

sndPlaySound("D:\\New folder(2)\\poiuy\\sound.wav",SND_ASYNC|SND_LOOP);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM