找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 120|回复: 0

【参考示例】【2025 RT杯APP大赛 参赛作品】PygameMp3Player

[复制链接]

7

主题

8

回帖

290

积分

版主

积分
290
发表于 5-2-2025 17:10:21 | 显示全部楼层 |阅读模式
本帖最后由 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):

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

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

本版积分规则

Archiver|手机版|小黑屋|RealDevClub ( 沪ICP备2024093864号-1 )

GMT+8, 5-11-2025 06:04 , Processed in 0.061258 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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