本帖最后由 littleblackLB 于 5-2-2025 17:13 编辑
大家好,这是我的参赛作品 PygameMp3Player 音乐播放器。
这是一款由 Pygame 实现的音乐播放器,有着众多基础功能。
想法来源:
一度缺乏想象力的我,不管如何绞尽脑汁,要不然就是想法太烂,要不然缺乏趣味。于是苦闷的我只好放弃做游戏的这一想法,打开了网易云,默默的戴上耳机,从心灵中感受灵感的魂发。 灵感来自于现实,这时正在听网易云的我,突然灵机一动,看了眼网易云,正好一直热爱听歌的我,播放器不就是一个实用的软件嘛。于是就这样我便由衷的搞出了个远大的想法——音乐播放器。
心路历程:
这个项目也总计写了我差不多64个小时(代码55小时, 文档6小时,画图 3小时左右)拖拖拉拉,一个一个功能写也正好半个暑假(一个月)左右,算是我写过最长的时间吧。
虽然花费了这么多时间去写,但是不管是哪个项目,写完的那一刻回头一看说实话收获了很多。数次的调试、琢磨,从0KB到39KB,一天花尽个3-6小时绞尽脑汁一行行的刻印上去,感觉就像在建造一个生命体,构造他的灵魂,给我带来无穷的经验……
程序我是懒得(没那么多时间)维护了,这1000行的代码有很多可以优化的地方(当然bug是没有的 最多有一处),还有很多可以增加的地方,如果以后有空我会继续完善这个生命体的。
感谢家长与老师的支持,我会继续努力的,也感谢日日夜夜陪伴我的网易(抑)云233,希望这个项目能有一个出色的成绩(虽然我猜测比我强大的项目已不在少数)

功能特点- 基础播放功能:播放、暂停、上一首、下一首
- 播放模式切换:顺序播放、循环播放、随机播放
- 歌词显示:支持原歌词和翻译歌词
- 进度控制:拖动进度条可跳转到指定位置
- 音量调节:可视化音量控制条
- 歌词定位:点击歌词可跳转到对应时间点
- MP3 元数据读取:自动读取歌曲名、歌手、封面等信息
程序架构(MVC 设计模式)
Model(模型层)- 数据对象:Music,Lyric,LyricContainer
- 管理类:PlayManager,MusicTimeManager
View(视图层)- 界面类:MusicListUI,PlayUI
- 显示组件:PlayInfoDisplay,LyricDisplay,LyricDisplayObj,LyricDisplayObjContainer
- 控件类:Button,ScrollBar,PlayBar,VolumeBar,MusicList,SpecialMusicList
Controller(控制器层)- 核心框架类:PygameMp3Player(主控制器)

关键实现- 播放控制:使用时间戳实现精准播放时间控制
- 歌词同步:根据歌词时间标签进行精准同步
- 上一首功能:采用栈结构记录播放历史
- 资源管理:动态加载音乐文件和歌词文件
亮点与难点- 文本输入:实现文本框输入,并支持中文输入
- 在线歌词获取:调用网易云 API 获取歌词,并处理 API 请求、响应和错误
- 歌词翻页与高亮显示
- 歌词跳转:支持点击歌词跳转到对应播放位置
演示
1. 进度条拖放:
2. 根据歌词定位与复位:
3. 搜索功能
体验:
可执行文件(.exe)以及文档(.docx):
|