星海风驰 发表于 2020-6-4 15:52:39

【C++小游戏播放声音文件】

如题,黑框程序,想实现能读取放置在CPP文件夹内的音乐文件,就是换个磁盘也能正常读取的,比如达成一个条件就读取那个音频文件,请问各位大佬能不能教教如何实现呢?如果写个样板代码那就更感谢啦。(主要楼主也不知道用什么函数好....)

CodingCat_k 发表于 2020-6-4 15:52:40

一般用法:PlaySound(TEXT("[相对路径指定]音乐名.wav", NULL, SND_ASYNC | SND_FILENAME));
对于参数一最好加上Text(),且音乐文件格式貌似只支持wav(MP3通过转化即可);
关于函数的官方解释详见MSDN:https://docs.microsoft.com/en-us/previous-versions/dd743680%28v=vs.85%29。
PS: VS以外的其他编译器在头文件加完之后在编译选项加一个 -lwinmm
VC或者VS,记得添加资源文件
=======================================================================================
另外,还有个复杂点的mciSendString(),实现的功能也可大致相同
MSDN链接:https://docs.microsoft.com/en-us/previous-versions/dd757161%28v=vs.85%29

如果需要具体简易代码实现给邮箱,大小超过限制了

星海风驰 发表于 2020-6-4 18:14:09

{:10_266:}{:10_266:}{:10_266:}{:10_266:}

我叫MD 发表于 2020-6-4 18:27:48

如果只是想换个磁盘也能正常读取音乐文件的话,直接将音乐文件放入当前程序目录下,使用相对路径访问即可
达成某个条件读取音乐文件,不就是个判断吗?

星海风驰 发表于 2020-6-4 19:36:36

我叫MD 发表于 2020-6-4 18:27
如果只是想换个磁盘也能正常读取音乐文件的话,直接将音乐文件放入当前程序目录下,使用相对路径访问即可
...

如何实现播放呢?初学小白,查了一些Playsound函数的资料,不知道怎么用啊

我叫MD 发表于 2020-6-4 20:15:49

星海风驰 发表于 2020-6-4 19:36
如何实现播放呢?初学小白,查了一些Playsound函数的资料,不知道怎么用啊

PlaySound("这是是你的音乐文件名", NULL, SND_ASYNC | SND_LOOP | SND_NODEFAULT);

使用例子:

PlaySound("稻香.mp3", NULL, SND_ASYNC | SND_LOOP | SND_NODEFAULT);

星海风驰 发表于 2020-6-4 21:20:58

我叫MD 发表于 2020-6-4 20:15
PlaySound("这是是你的音乐文件名", NULL, SND_ASYNC | SND_LOOP | SND_NODEFAULT);

使用例子:



他提示这个,但是前面已经声明了啊

我叫MD 发表于 2020-6-4 21:30:03

代码和报错都给看下   用的IDE不一样,这个还真不清楚

星海风驰 发表于 2020-6-4 21:51:23

我叫MD 发表于 2020-6-4 21:30
代码和报错都给看下   用的IDE不一样,这个还真不清楚

#include<iostream>
#include<cstdlib>
#include<ctime>
#include<windows.h>
#include<Mmsystem.h>
#pragma comment(lib,"winmm.lib")
#include<dsound.h>
using namespace std;

int main()
{
        system("color 2f");
        system ("title 星海风驰");
        cout<<"欢迎来到猜数字的游戏,系统会随机给出四位整数,您有十次机会来猜对此数字"<<endl;
    cout<<"每次猜测后,系统将会提示您,其中位置和数字均正确将以A表示,数字正确而位置错误将以B表示"<<endl;
    cout<<"希望您能顺利过关!!!!"<<endl;
        int i,j;                                                                                        //计数器
        int num,guess;                                                                                //用来存放随机数和用户数
        int arr1,arr2;                                                                //分别存放各位随机数和各位猜测数字
        int a=0,b=0;                                                                                //用来统计A,B
        int count=1;                                                                                //用来统计用户的猜测此数

        srand(unsigned(time(NULL)));                                                //产生随机数
        num=(rand()%5000+5000)*17/19;

        while(count<=10)
        {

        arr1=num%10;
        arr1=num/10%10;
        arr1=num/100%10;
        arr1=num/1000;

        a=0;b=0;
        cout<<"请输入第"<<count<<"个四位数:";
    PlaySound("强化失败.wav", NULL, SND_ASYNC | SND_LOOP | SND_NODEFAULT);
        cin>>guess;

        if(guess>9999 or guess<1000 or guess%1 !=0) {cout<<"输入不合法,请输入一个四位数"<<endl;continue;}                //判断输入是否合法

        arr2=guess%10;
        arr2=guess/10%10;
        arr2=guess/100%10;
        arr2=guess/1000;

        for(i=0;i<=3;i++)                                                                //这里用两个循环来校验用户数和猜测数
        {
                for(j=0;j<=3;j++)
                        if(arr1==arr2&&i==j)
                        {a++;arr1=10;arr2=11;}

        }
        for(i=0;i<=3;i++)
        {
                for(j=0;j<=3;j++)
                        if(arr1==arr2)
                        {b++;arr1=10;arr2=11;}
        }


        if(a==4) break;
        cout<<""<<a<<"A"<<b<<"B"<<endl;
        count++;
        }
        if(count==11)
                cout<<"您好,正确的数为"<<num<<endl<<"由于你猜测错误,程序即将爆炸....."<<endl;
        else
                cout<<"恭喜您猜对了,此数为"<<num<<endl<<"由于您智商过高,程序即将爆炸"<<endl;
        system("pause=NULL");
        return 0;
}

我叫MD 发表于 2020-6-4 22:24:07

我这么简单测试了一下 编译没问题,而且也有声音,你的我还真不清楚怎么回事
毕竟咱们环境不同

xiaosi4081 发表于 2020-6-5 07:43:16

星海风驰 发表于 2020-6-4 21:51


你那个是坑人吧(自爆){:10_256:}

xiaosi4081 发表于 2020-6-5 07:45:35

我叫MD 发表于 2020-6-4 22:24
我这么简单测试了一下 编译没问题,而且也有声音,你的我还真不清楚怎么回事
毕竟咱们环境不同

可能他那个用的是其他编译器,你用的是vs

星海风驰 发表于 2020-6-5 19:52:03

CodingCat_k 发表于 2020-6-5 08:27
一般用法:PlaySound(TEXT("[相对路径指定]音乐名.wav", NULL, SND_ASYNC | SND_FILENAME));
对于参数一最 ...

用的codeblockks,加了-lwinmm跟上面一样的错误,
邮箱
344579390@qq.com
谢谢{:10_266:}

星海风驰 发表于 2020-6-5 19:56:29

CodingCat_k 发表于 2020-6-5 08:27
一般用法:PlaySound(TEXT("[相对路径指定]音乐名.wav", NULL, SND_ASYNC | SND_FILENAME));
对于参数一最 ...

我就是想设计一个成功,一个失败,成功读取Success.wav
失败读取Fall.wav

CodingCat_k 发表于 2020-6-6 09:14:12

星海风驰 发表于 2020-6-5 19:52
用的codeblockks,加了-lwinmm跟上面一样的错误,
邮箱



已发送注意查收,论坛不经常在线,有疑问直接至邮
页: [1]
查看完整版本: 【C++小游戏播放声音文件】