python做mp3播放器_从零开始学习python,写一个mp3播放器!

随后,因为我们的消息循环中肯定还可能嵌套循环,一个break语句只能打破内部的循环,并不能让外部循环也退出,所以我们定义了一个bool的变量,来表示程序是否需要退出循环。

这里的消息循环从技术上并没有啥难度,主要是你需要适应这么多新的函数和预定义的变量(这里当然当做常量来用,比如表示pygame需要退出)。

在内部循环中,我们判断了三种可能需要退出的消息。一是自己定义的,如果音乐播放结束,应当退出;二是用户用鼠标关闭窗口,程序应当退出;三是按q键表示用户希望退出播放。

按下按键游戏采取相应动作是很常见的游戏处理工作,我们在这里等待用户按下按键然后再松开的这一刻退出,这样防止用户按下q键一直没有松手所导致的程序退出后,屏幕上还会出现很多q字符的情况。

现在的程序已经能正常的播放音乐了,实际上我们的程序还能进一步优化。比如1.添加播放的时间显示;2.向前向后跳转播放。

这两个功能都可以在消息循环中处理,这样程序才是并行的。现在你可能感觉到了,实际上消息循环中,才是程序的主要逻辑。的确如此,其实所有的游戏基本都是在消息循环中做所有的主要工作,当然具体工作细节,都是由已经定义好的函数或叫子程序来具体执行完成的,在主循环中,只是对这些函数的组织、管理和调用。

显示播放位置:#程序主循环

while not requireQuit:

#获取当前播放位置

pos=pygame.mixer.music.get_pos()

#显示

print("Playing:", pos,end='\r')

消息循环中,在按键部分添加代码: #如果是向右键,则前跳10秒

elif event.key == pygame.K_LEFT:

pygame.mixer.music.set_pos(pos/1000-10)

#如果是向左键,则后跳10秒

elif event.key == pygame.K_RIGHT:

pygame.mixer.music.set_pos(pos/1000+10)

这样的功能增加,依赖于你对pygame扩展库越来越熟悉,通过阅读文档,发现pygame扩展库能提供什么样的功能。而这个功能你又需要,就可以加入到程序中。

练习时间

其实本讲可以说从开始到现在都是挑战,因此没有再设置单独的挑战环节。

我们直接进入练习的环节:

以本讲前面最终版代码code5.py为蓝本,修改程序,实现由命令行参数接受mp3文件名,并播放

除了q键之外,请设定ESC键也作为退出按键。提示,ESC键的代码为:pygame.K_ESCAPE

本讲小结

python并不是很适合进行游戏编程,但游戏编程的学习能让你的程序更友好,并具有丰富的表现力

并行、事件驱动的编程思想,是现代程序开发的前沿思想,对于提高程序的效率和稳定性有重要的帮助

在一个新模块的学习中,循序渐进,逐步完善代码是常用的一种手段。在本讲,我们更侧重讲述,你接触到一个新的扩展包,如何查找资料、分析问题,最终掌握它的使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值