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. Вместо воспроизведения «shotgun.wav» он воспроизводит один из звуков системы Windows, называемый «Звуковой сигнал по умолчанию», когда нажимается кнопка «пробел». Игра зависала несколько секунд, пока звук не закончился, однако я исправил эту проблему, заменив строку thw на следующую:
PlaySound(TEXT("shotgun.wav"), NULL, SND_FILENAME | SND_ASYNC);
Он больше не зависает, но, тем не менее, он продолжает воспроизводить звук Windows System вместо 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», затем я вернулся в игру и скомпилировал и вала! Это работало. НО, конечно, это НЕ то, что я хочу, потому что, очевидно, это будет работать только на моем ПК, и мы этого не хотим.
Задача ещё не решена.
Других решений пока нет …