播放器设计 要求:实现播放、循环播放、暂停、快进、下一首、打开选择功能
《软件开发工具》实验
一、实验内容
实验1:写字板设计
要求:实现字体颜色、大小更改;实现查找、替换功能
例图如下:
实验2:画图工具设计
要求:实现画笔粗细、颜色选择;实现裁剪、插入图片
例图如下:
实验3:播放器设计
要求:实现播放、循环播放、暂停、快进、下一首、打开选择功能
例图如下:
二、实验要求
完成实验1、2、3并上交源程序及实验报告。
三、考核标准
1. 上交源程序前,指导教师检查程序代码和实验结果。通过若干个提问,检查相关概念的理解,以及实验的独立完成情况。
2. 程序界面、功能的完善性、运行的可靠性是评定成绩的重要标准。
# 导入所需的模块
import os
import pygame
# 定义一个播放器类
class Player:
# 初始化
def __init__(self):
pygame.init()
# 定义音乐文件列表
self.play_list = []
# 定义当前播放音乐的索引
self.current_index = 0
# 定义当前播放状态
self.is_paused = False
# 添加歌曲到播放列表
def add_music(self, music_file):
# 将文件路径添加到播放列表中
self.play_list.append(music_file)
# 选择播放
def select_play(self, index):
# 获取当前音频文件
self.current_index = index
# 获取当前音频文件路径
music_file = self.play_list[self.current_index]
# 加载音乐文件
pygame.mixer.music.load(music_file)
# 播放音乐
pygame.mixer.music.play()
# 播放
def play(self):
# 如果播放列表不为空
if self.play_list:
# 加载音乐文件
pygame.mixer.music.load(self.play_list[self.current_index])
# 播放音乐
pygame.mixer.music.play()
# 设置循环播放
pygame.mixer.music.play(-1)
# 修改播放状态
self.is_paused = False
# 暂停
def pause(self):
# 如果当前是播放状态
if not self.is_paused:
# 暂停播放
pygame.mixer.music.pause()
# 修改播放状态
self.is_paused = True
# 继续播放
def resume(self):
# 如果当前是暂停状态
if self.is_paused:
# 继续播放
pygame.mixer.music.unpause()
# 修改播放状态
self.is_paused = False
# 快进
def fast_forward(self):
# 获取音乐文件的时长
music_length = pygame.mixer.music.get_length()
# 将当前播放时间加1秒
pygame.mixer.music.set_pos(music_length + 1)
# 下一首
def next_song(self):
# 如果当前播放列表不为空
if self.play_list:
# 获取播放列表的最大索引
max_index = len(self.play_list) - 1
# 如果当前音乐已经是最后一首
if self.current_index == max_index:
# 将当前索引重置为第一首
self.current_index = 0
else:
# 将当前索引加1
self.current_index += 1
# 选择播放
self.select_play(self.current_index)
# 主函数
def main():
# 创建播放器对象
player = Player()
# 定义音乐文件路径
music_dir = os.path.dirname(os.path.abspath(__file__))
# 遍历音乐文件路径
for root, dirs, files in os.walk(music_dir):
# 遍历文件
for file in files:
# 如果文件是mp3文件
if file.endswith(".mp3"):
# 将文件路径添加到播放列表中
player.add_music(os.path.join(root, file))
# 播放音乐
player.play()
while True:
# 获取用户输入
command = input("请输入指令:").strip()
# 如果用户输入为空
if not command:
continue
# 如果用户输入指令为q
if command == 'q':
# 停止播放音乐
pygame.mixer.music.stop()
break
# 如果用户输入指令为暂停
elif command == 'pause':
# 暂停播放音乐
player.pause()
# 如果用户输入指令为继续
elif command == 'resume':
# 继续播放音乐
player.resume()
# 如果用户输入指令为快进
elif command == 'ff':
# 快进播放音乐
player.fast_forward()
# 如果用户输入指令为下一首
elif command == 'next':
# 播放下一首音乐
player.next_song()
# 如果用户输入指令为打开选择
elif command == 'open':
# 遍历播放列表
for index, music in enumerate(player.play_list):
# 打印歌曲名
print("%d. %s" % (index, music))
# 获取用户输入的索引
index = int(input("请输入歌曲编号:"))
# 选择播放
player.select_play(index)
# 调用主函数
if __name__ == '__main__':
main()
播放器设计 要求:实现播放、循环播放、暂停、快进、下一首、打开选择功能相关推荐
- 远程WEB控制MP3播放器设计(基于mini2440)
网上有很多 基于mini2440的MP3播放器设计的资料,多是按键控制,这里博主做了些轻微改动,利用远程WEB来控制MP3播放,具体怎么实现,下面会给出,大家先看看效果: WEB界面: 后台运行: 因 ...
- 基于STM32的电子琴音乐播放器设计
基于STM32的电子琴/音乐播放器设计 文章目录 基于STM32的电子琴/音乐播放器设计 @[toc] 引言 第一章 总体设计 1.1 系统功能 1.2 主要技术性能指标 第二章 系统设计 2.1 系 ...
- vb毕业设计——基于vb+VB.NET的媒体播放器设计与实现(毕业论文+程序源码)——媒体播放器
基于vb+VB.NET的媒体播放器设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET的媒体播放器设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 文章目录: 基于 ...
- 基于android平台多媒体播放器的设计与实现,基于Android的多媒体音乐播放器设计论文...
中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2016)03-0240-02 随着计算机网络与手机的迅速发展,各种音乐资源成为人们生活中必不可少的一部分,音乐播放软件成了手机必 ...
- 毕业设计 嵌入式 MP3音乐播放器设计与实现
文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 系统架构 3.2 软件部分设计 3.3 实现效果 3.4 部分相关代码 4 最后 1 简介 Hi,大家好,学长今天向大家介绍 ...
- android音乐播放器ppt,基于Android音乐播放器设计与开发.ppt
基于Android音乐播放器设计与开发 毕业设计 基于Android的音乐播放器 设计与开发 设计概述 研究背景 研究意义 研究目标 系统演示 研究背景 随着Android智能手机的普及,用户越来越能 ...
- 【毕业设计】基于单片机的MP3音乐播放器设计与实现 - stm32 物联网 c51
文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 系统架构 3.2 软件部分设计 3.3 实现效果 3.4 部分相关代码 4 最后 1 简介 Hi,大家好,这里是丹成学长,今 ...
- Windows平台RTSP播放器/RTMP播放器设计需要考虑的几个点
我们在实现Windows平台RTSP播放器或RTMP播放器的时候,需要考虑的点很多,比如多实例设计.多绘制模式兼容.软硬解码支持.快照.RTSP下TCP-UDP自动切换等,以下就其中几个方面,做个大概 ...
- android音乐播放器实验报告总结,音乐播放器设计实验报告.docx
音乐播放器设计实验报告.docx 实验报告课程名称数字系统设计实验指导老师成绩_____________实验名称音乐播放器设计实验实验类型设计型一.实验目的和要求(必填)二.实验内容和原理(必填)三. ...
最新文章
- 错误名称:EntityCommandExecutionException
- typedef函数指针用法
- 从Spring-Session源码看Session机制的实现细节
- 解决OpenCV问题:OpenCV Error: Assertion failed (!empty()) in cv::CascadeClassifier::detectMultiScale,
- 电气:蒙特卡洛1000个风光场景并通过削减法|聚类法得到几个典型场景(matlab\python实现)
- 华为服务器提示错误信息,服务器错误日志
- indexOf 方法
- 【Clickhouse】Clickhouse 数据字典
- PHP统计链接跳转的次数,如何在PHP页面统计某链接的点击数
- 第Q题:聪明的木匠(队列解答)=======一位老木匠需要将一根长的木棒切成N段...
- Python Django之路由系统
- 物联网安全硬件修改系列-硬改
- java一维数组求质数_Java数组中最大质数和最小质数之间的差异
- Linux系统配置(shell函数与数组)
- 2019保研回顾——西电计科到北理工计科
- 情人节程序员用HTML网页表白【情人节爱你的代码】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- 常见安全漏洞及其解决方案
- webui 通过提示词矩阵的文本框功能添加负面标签
- [小白向]Python使用request库调用API并获取返回的JSON数据包中的内容
- 红帽与Cloudera结成大数据联盟 释放企业级Hadoop潜能