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