《软件开发工具》实验
一、实验内容
实验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()

播放器设计 要求:实现播放、循环播放、暂停、快进、下一首、打开选择功能相关推荐

  1. 远程WEB控制MP3播放器设计(基于mini2440)

    网上有很多 基于mini2440的MP3播放器设计的资料,多是按键控制,这里博主做了些轻微改动,利用远程WEB来控制MP3播放,具体怎么实现,下面会给出,大家先看看效果: WEB界面: 后台运行: 因 ...

  2. 基于STM32的电子琴音乐播放器设计

    基于STM32的电子琴/音乐播放器设计 文章目录 基于STM32的电子琴/音乐播放器设计 @[toc] 引言 第一章 总体设计 1.1 系统功能 1.2 主要技术性能指标 第二章 系统设计 2.1 系 ...

  3. vb毕业设计——基于vb+VB.NET的媒体播放器设计与实现(毕业论文+程序源码)——媒体播放器

    基于vb+VB.NET的媒体播放器设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET的媒体播放器设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 文章目录: 基于 ...

  4. 基于android平台多媒体播放器的设计与实现,基于Android的多媒体音乐播放器设计论文...

    中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2016)03-0240-02 随着计算机网络与手机的迅速发展,各种音乐资源成为人们生活中必不可少的一部分,音乐播放软件成了手机必 ...

  5. 毕业设计 嵌入式 MP3音乐播放器设计与实现

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 系统架构 3.2 软件部分设计 3.3 实现效果 3.4 部分相关代码 4 最后 1 简介 Hi,大家好,学长今天向大家介绍 ...

  6. android音乐播放器ppt,基于Android音乐播放器设计与开发.ppt

    基于Android音乐播放器设计与开发 毕业设计 基于Android的音乐播放器 设计与开发 设计概述 研究背景 研究意义 研究目标 系统演示 研究背景 随着Android智能手机的普及,用户越来越能 ...

  7. 【毕业设计】基于单片机的MP3音乐播放器设计与实现 - stm32 物联网 c51

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 系统架构 3.2 软件部分设计 3.3 实现效果 3.4 部分相关代码 4 最后 1 简介 Hi,大家好,这里是丹成学长,今 ...

  8. Windows平台RTSP播放器/RTMP播放器设计需要考虑的几个点

    我们在实现Windows平台RTSP播放器或RTMP播放器的时候,需要考虑的点很多,比如多实例设计.多绘制模式兼容.软硬解码支持.快照.RTSP下TCP-UDP自动切换等,以下就其中几个方面,做个大概 ...

  9. android音乐播放器实验报告总结,音乐播放器设计实验报告.docx

    音乐播放器设计实验报告.docx 实验报告课程名称数字系统设计实验指导老师成绩_____________实验名称音乐播放器设计实验实验类型设计型一.实验目的和要求(必填)二.实验内容和原理(必填)三. ...

最新文章

  1. 错误名称:EntityCommandExecutionException
  2. typedef函数指针用法
  3. 从Spring-Session源码看Session机制的实现细节
  4. 解决OpenCV问题:OpenCV Error: Assertion failed (!empty()) in cv::CascadeClassifier::detectMultiScale,
  5. 电气:蒙特卡洛1000个风光场景并通过削减法|聚类法得到几个典型场景(matlab\python实现)
  6. 华为服务器提示错误信息,服务器错误日志
  7. indexOf 方法
  8. 【Clickhouse】Clickhouse 数据字典
  9. PHP统计链接跳转的次数,如何在PHP页面统计某链接的点击数
  10. 第Q题:聪明的木匠(队列解答)=======一位老木匠需要将一根长的木棒切成N段...
  11. Python Django之路由系统
  12. 物联网安全硬件修改系列-硬改
  13. java一维数组求质数_Java数组中最大质数和最小质数之间的差异
  14. Linux系统配置(shell函数与数组)
  15. 2019保研回顾——西电计科到北理工计科
  16. 情人节程序员用HTML网页表白【情人节爱你的代码】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  17. 常见安全漏洞及其解决方案
  18. webui 通过提示词矩阵的文本框功能添加负面标签
  19. [小白向]Python使用request库调用API并获取返回的JSON数据包中的内容
  20. 红帽与Cloudera结成大数据联盟 释放企业级Hadoop潜能

热门文章

  1. 如何投资建设智慧养殖场
  2. hive数据类型有哪些?
  3. 电容笔适用所有平板吗?高性价比电容笔测评
  4. 全网最详细Redis配置文件--redis.config
  5. 社交网络环境下基于信任的推荐算法
  6. Redis 过期 key 清理删除策略汇总
  7. 测试用例设计方法:正交实验法使用示例
  8. Filter、FilterChain、FilterConfig 介绍
  9. 【Docker】利用ambassador实现container跨主机连接
  10. Ambassador系列-12-Prometheus Operator监控Ambassador Edge Stack