繁体   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