首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C语言】EasyX图形库——实现游戏音效(详解)(要游戏音效的看过来!!!)

【C语言】EasyX图形库——实现游戏音效(详解)(要游戏音效的看过来!!!)

作者头像
zore
发布2025-12-30 18:53:42
发布2025-12-30 18:53:42
1560
举报
文章被收录于专栏:C/C++ 专栏C/C++ 专栏

前言

当我们在写游戏项目时,游戏没有音效将会有些许无聊 所以,我们可以依靠EasyX图形库来实现音效 (本文仅涉及用easyx图形库完成音效,但EasyX的功能远远不止这些,还可以控制字体格式、绘制图片等等,小编在这里只是泛泛而谈)

一、EasyX 概述

EasyX 是一款专为 C++ 开发者设计的轻量级图形库,主要面向 Windows 平台 EasyX 的 API 设计简洁直观,易学易用,绘图效果所见即所得 EasyX 含有一些简单的函数集合,几乎不用学习,直接翻看参考手册就可以直接使用 正因为 EasyX 足够简单,在进行 C/C++、图形学、图像学、分形学等课程实验时,可以专注在课程知识上,不被绘图部分牵扯太多精力。

二、EasyX 下载与安装

首先,去EasyX的官网下载与安装 链接:https://easyx.cn/

在这里插入图片描述
在这里插入图片描述

接着,点开下载好的安装包

在这里插入图片描述
在这里插入图片描述

然后,将这两个安装到电脑上

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、mciSendString函数

**为了实现音效,我们用到mciSendString函数

1.头文件

要实现音效要包含以下两个头文件以及一个预处理指令: #include<easyx.h> #include<mmsystem.h> #pragma comment(lib,"winmm.lib") (这里也不好展开来讲,就先记下吧)

2.简介

功能: mciSendString 函数是 Windows API 中用于控制多媒体设备(如音频和视频播放器)的一个功能强大的函数。它可以执行多种操作,如播放、暂停、停止、录音等。 语法: MCIERROR mciSendString( LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback ); 大家可以去微软官网上查看: https://learn.microsoft.com/en-us/previous-versions/dd757161(v=vs.85)

3.参数

mciSendString函数的参数有很多 但对于我们只要音效来说只需要记住一个 (其余的参数在我们使用的时候全部置为0)

LPCTSTR lpszCommand: 指针指向一个空终止字符串,该字符串指定 MCI 命令字符串。 那MCI 命令字符串是什么呢? 大家可以去微软官网上查看: https://learn.microsoft.com/zh-cn/windows/win32/multimedia/multimedia-command-strings?redirectedfrom=MSDN

在这里插入图片描述
在这里插入图片描述

MCI 命令字符串就是一些操作指令,比如打开音乐、暂停音乐等等 (本文仅涉及打开、播放、关闭音乐)

例如: mciSendString(L"open 背景音乐.mp3", 0, 0, 0); “open 背景音乐.mp3”就是MCI 命令字符串,意为打开音乐 且注意:“open 背景音乐.mp3”的字面量前要加‘ L ’ (目前的学习后面三个参数只写3个0)

4.音乐的导入

音乐的导入其实很简单,与文件的导入同理 只需要将要导入的音频与源文件放在同一级即可 注意: 音频的格式一定要是. mp3形式

如图:

在这里插入图片描述
在这里插入图片描述

这样就可以调用音频啦

5.演示

光说大家肯定听不懂,现在给大家一些实例

需要注意的是:!!! easyx只在c++的环境下兼容,所以把源文件. c后缀改为. cpp后缀 且注意: “open 背景音乐.mp3”的字面量前要加‘ L ’

在我们播放音乐时,就只有三个操作: 打开音乐、播放音乐、关闭音乐 要想播放音乐,首先得打开音乐,然后再播放音乐 打开音乐:mciSendString(L"open 吃东西.mp3", 0, 0, 0); 播放音乐:mciSendString(L"play 吃东西.mp3", 0, 0, 0); 关闭音乐:mciSendString(L"close 吃东西.mp3", 0, 0, 0);

(1)播放长音乐(音乐不会播完)

代码演示:

这里我们设置三个暂停处,方便观察结果

代码语言:javascript
复制
//加一些必要的头文件以及预处理指令
#include <stdio.h>
#include<easyx.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")

int main()
{
	//打开音乐
	mciSendString(L"open 背景音乐.mp3", 0, 0, 0);

	//播放背景音乐
	mciSendString(L"play 背景音乐.mp3", 0, 0, 0);

	//将程序进行暂停以免程序结束
	//方便观察结果
	system("pause");

  //关闭背景音乐
	mciSendString(L"close 背景音乐.mp3", 0, 0, 0);

  //将程序进行暂停以免程序结束
	//方便观察结果
	system("pause");

   //播放背景音乐
	mciSendString(L"play 背景音乐.mp3", 0, 0, 0);
	
	//将程序进行暂停以免程序结束
	//方便观察结果
	system("pause");

	return 0;
}

运行结果: (大家也听不到,我就给大家描述描述)

结果显示: 第一个暂停时,音乐开始播放 第二个暂停时,音乐停止 第三个暂停时,音乐从头开始播放

(2)播放短音乐(音乐会播完)

代码演示: 这里我们把close关闭音乐删去,并设置两个暂停处,方便观察结果

代码语言:javascript
复制
#include <stdio.h>
#include<easyx.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")

int main()
{
	//打开音乐
	mciSendString(L"open 吃东西.mp3", 0, 0, 0);

	//播放背景音乐
	mciSendString(L"play 吃东西.mp3", 0, 0, 0);

	//将程序进行暂停以免程序结束
	//方便观察结果
	system("pause");

	//播放背景音乐
	mciSendString(L"play 吃东西.mp3", 0, 0, 0);

	//将程序进行暂停以免程序结束
	//方便观察结果
	system("pause");

	return 0;
}

运行结果: (大家也听不到,我就给大家描述描述)

结果显示: 第一个暂停时,音乐开始播放,并且播完 第二个暂停时,音乐没有从头播放

所以在播放短音乐且音乐播完后 mciSendString(L"play 吃东西.mp3", 0, 0, 0);不能再次播放音乐 这时候该怎么办呢?不可能只播放一次吧,每吃一次东西都要播放音效

很简单,在音乐每次播放完毕和下次要开始播放中间加入close关闭音乐 代码演示: 这里我们设置三个暂停处,方便观察结果

代码语言:javascript
复制
#include <stdio.h>
#include<easyx.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")

int main()
{
	//打开音乐
	mciSendString(L"open 吃东西.mp3", 0, 0, 0);

	//播放背景音乐
	mciSendString(L"play 吃东西.mp3", 0, 0, 0);

	//将程序进行暂停以免程序结束
	//方便观察结果
	system("pause");

	//关闭背景音乐
	mciSendString(L"close 吃东西.mp3", 0, 0, 0);

	//将程序进行暂停以免程序结束
	//方便观察结果
	system("pause");

	//播放背景音乐
	mciSendString(L"play 吃东西.mp3", 0, 0, 0);

	//将程序进行暂停以免程序结束
	//方便观察结果
	system("pause");

	return 0;
}

运行结果: (大家也听不到,我就给大家描述描述)

结果显示: 第一个暂停时,音乐开始播放并且播放完毕 第二个暂停时,音乐没有播放 第三个暂停时,音乐又从头开始播放

这里相当于给音乐播放重置到了起始位置

所以,当我们在播放短音乐(音乐会播完)时 一定要在音乐每次播放完毕和下次要开始播放中间加入close关闭音乐 将音乐播放重置到起始位置,不然音乐播放不出来

结语

OK,本期的EasyX图形库音效讲解到这里就结束了

下一期我将给大家带来贪吃蛇游戏项目实战

大家可自己尝试调用音乐去加入到自己的游戏中,改进自己的项目==

本文有若有不足之处,希望各位兄弟们能给出宝贵的意见。谢谢大家!!! 新人,本期制作不易希望各位兄弟们能动动小手,三连走一走!!! 支持一下(三连必回QwQ)

本期资料来自于:

https://legacy.cplusplus.com/

以及:

https://learn.microsoft.com/zh-cn/windows/win32/api/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、EasyX 概述
  • 二、EasyX 下载与安装
  • 三、mciSendString函数
    • 1.头文件
    • 2.简介
    • 3.参数
    • 4.音乐的导入
    • 5.演示
      • (1)播放长音乐(音乐不会播完)
      • (2)播放短音乐(音乐会播完)
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档