鱼C论坛

 找回密码
 立即注册
查看: 1206|回复: 14

[已解决]【C++小游戏播放声音文件】

[复制链接]
发表于 2020-6-4 15:52:39 | 显示全部楼层 |阅读模式
2鱼币
如题,黑框程序,想实现能读取放置在CPP文件夹内的音乐文件,就是换个磁盘也能正常读取的,比如达成一个条件就读取那个音频文件,请问各位大佬能不能教教如何实现呢?如果写个样板代码那就更感谢啦。(主要楼主也不知道用什么函数好....)
最佳答案
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 ... 757161%28v=vs.85%29

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

最佳答案

查看完整内容

一般用法: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,记得添加资源文件 ========================================== ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 ... 757161%28v=vs.85%29

如果需要具体简易代码实现给邮箱,大小超过限制了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-4 18:14:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-4 18:27:48 | 显示全部楼层
如果只是想换个磁盘也能正常读取音乐文件的话,直接将音乐文件放入当前程序目录下,使用相对路径访问即可
达成某个条件读取音乐文件,不就是个判断吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

如何实现播放呢?初学小白,查了一些Playsound函数的资料,不知道怎么用啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-4 21:20:58 | 显示全部楼层
我叫MD 发表于 2020-6-4 20:15
PlaySound("这是是你的音乐文件名", NULL, SND_ASYNC | SND_LOOP | SND_NODEFAULT);

使用例子:

L3QTTG6INP45EUQ9CW90YHL.png NSNJCET$L]N}81ALBSXY%ND.png
他提示这个,但是前面已经声明了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-4 21:30:03 | 显示全部楼层
代码和报错都给看下   用的IDE不一样,这个还真不清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-4 21:51:23 | 显示全部楼层
我叫MD 发表于 2020-6-4 21:30
代码和报错都给看下   用的IDE不一样,这个还真不清楚
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<ctime>
  4. #include<windows.h>
  5. #include<Mmsystem.h>
  6. #pragma comment(lib,"winmm.lib")
  7. #include<dsound.h>
  8. using namespace std;

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

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

  23.         while(count<=10)
  24.         {

  25.         arr1[3]=num%10;
  26.         arr1[2]=num/10%10;
  27.         arr1[1]=num/100%10;
  28.         arr1[0]=num/1000;

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

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

  34.         arr2[3]=guess%10;
  35.         arr2[2]=guess/10%10;
  36.         arr2[1]=guess/100%10;
  37.         arr2[0]=guess/1000;

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

  43.         }
  44.         for(i=0;i<=3;i++)
  45.         {
  46.                 for(j=0;j<=3;j++)
  47.                         if(arr1[i]==arr2[j])
  48.                         {b++;arr1[i]=10;arr2[j]=11;}
  49.         }


  50.         if(a==4) break;
  51.         cout<<"  "<<a<<"A"<<b<<"B"<<endl;
  52.         count++;
  53.         }
  54.         if(count==11)
  55.                 cout<<"您好,正确的数为"<<num<<endl<<"由于你猜测错误,程序即将爆炸....."<<endl;
  56.         else
  57.                 cout<<"恭喜您猜对了,此数为"<<num<<endl<<"由于您智商过高,程序即将爆炸"<<endl;
  58.         system("pause=NULL");
  59.         return 0;
  60. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-5 07:43:16 | 显示全部楼层

你那个是坑人吧(自爆)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

可能他那个用的是其他编译器,你用的是vs
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-6 09:14:12 | 显示全部楼层
星海风驰 发表于 2020-6-5 19:52
用的codeblockks,加了-lwinmm跟上面一样的错误,
邮箱

已发送注意查收,论坛不经常在线,有疑问直接至邮
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 20:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表