pygame系列_原创百度随心听音乐播放器_完整版
程序名: 解释:pygame+music 之前发布了自己写的小程序:百度随心听音乐播放器的一些效果图 你可以去到这里再次看看效果: pygame系列_百度随心听_完美的UI设计 这个程序的灵感来自于百度随心听 说明: ? ? ???动作按钮全部是画出来的,没有用到任何图片 ? ? ? ?用到图片的只有:背景,歌手图片,作者图片 经过一个阶段的调试,现在算是可以拿上台面和大家交流 功能介绍: A.四个按钮介绍 ?1.完成停止,播放音乐功能 ?2.喜欢/不喜欢当前所播放的音乐 ?3.删除当前所播放的音乐(物理环境下不会删除,删除的是内存中的) ?4.下一曲 ?5.当鼠标经过按钮的时候,按钮颜色会变化 B.状态栏(最下面) ?1.显示所有歌曲数(AllSongs) ?2.当前播放的歌曲是第只歌曲 ?3.当前音量(范围:0 - 10) ?4.音量的图形显示(这里没有用到图片,而是系统画出来的:-)) ?5.我的邮箱信息:hongtenzone@foxmail.com C.右下角 ?1.当鼠标移动到黄色圆区域,会展示出我的相片和'Yes,You are Luck:)'字样 ? 鼠标一开的时候会自动隐藏(我想接触过android系统手机的的朋友,可能有这样的经历,在工具里面有一个地方 ? 当点击三下的时候,会出现android里面的一副图片....对我这里的灵感来自于这里ll)
下面我说说我做的思路吧 我想有一部分朋友会喜欢的...:) 首先,主题功能是音乐播放,那么我们就应该实现这个音乐播放的功能 哈哈,这个灵感来自于我之前写的小游戏:
在这个游戏中,我实现了音乐的播放,于是乎我就想在音乐播放上面做一些文章... 接下来是程序PyMusic的主题界面需要考虑,我个人喜欢听歌...百度音乐,百度随心听都是常去的地方.. 百度随心听的界面设计简洁,很适合我的风格...所以我选择了百度随心听.. 于是乎我看是看百度随心听的代码...一不小心被我大概看明白了按钮之间的逻辑.... 一时间,头脑中出现了PyMusic的原型.... 为什么不做一个呢?我就这样问着我自己,慢慢在脑海中呈现PyMusic的原型... 然后开始动笔,把pyMusic的原型在纸上画了出来.... 画好了,就开始分析...(这个过程有一点长..) 然后把原型中的物体(按钮,图片加载..)一个一个的实现.. 最后加上我的小自信..呵呵,成啦.. ======================================= 一些细节 在做PyMusic的过程中,需要注意一些细节的地方 我下面把这些地方罗列出来 1.音量图形的初始化 VOLUME_POINTS = VOLUME_POINTS_START = VOLUME_RECT_COLORS = p range(170,250,7 VOLUME_POINTS.append([SCREEN_W - p,SCREEN_H + 20 ps range(175,7 VOLUME_POINTS_START.append([SCREEN_W - VOLUME_RECT_COLORS.append((randint(0,255),randint(0,255)))
2.加载歌曲和图片 SONG_ARRAY = SONG_IMAGE = song SONG_IMAGE.append(pygame.image.load(os.path.join(DATA_DIR,IMAGE_DIR,SONGS[song][3])).convert())
3.字体加载 font = pygame.font.Font(os.path.join(DATA_DIR,FONT_DIR,),14 font_song_title = pygame.font.Font(os.path.join(DATA_DIR,),24 font_song = pygame.font.Font(os.path.join(DATA_DIR,),16)
4.停止/播放按钮 points=[(77,340),(77,360),(95,350
Rect(77,340,5,23 Rect(88,23 ))
5.删除歌曲按钮 pygame.draw.circle(screen,CIRCLES_POS[2 pygame.draw.circle(screen,(215,6,3 Rect(200,30,6 Rect(204,3,20 Rect(210,20 Rect(217,20 Rect(223,20 Rect(204,360,22,5 ))
6.作者信息展示 pygame.draw.circle(screen,CIRCLES_POS[4 (255,255,255 Rect(418,248,144,154 screen.blit(author_image,(420,250 luck = font_song_title.render(,True,(255,165,10 screen.blit(luck,(280,416))
7.第一个监听器 x,y = color = (255,25 color_red = (230 index p_x = (CIRCLES_POS[index][0] - x)**2
p_y = (CIRCLES_POS[index][1] - y)**2
p_r = (CIRCLR_R)**2
(p_x + p_y <= index == 0 index == 0 index == 1 index == 1 index == 2 index == 3 index == 4 button_authon_image(screen,color)
8.第二个监听器 x,y = index p_x = (CIRCLES_POS[index][0] - x)**2
p_y = (CIRCLES_POS[index][1] - y)**2
p_r = (CIRCLR_R)**2
(p_x + p_y <= index == 0
PLAY_FLAG = index == 0
PLAY_FLAG = index == 1 (,SONGS[SONG_FLAG][1],> PREFER_FLAG = index == 1 (,> PREFER_FLAG = index == 2 (,> SONG_FLAG > SONG_FLAG >= len(SONGS) - 1 SONG_FLAG -= 1
( index == 3 SONG_FLAG < len(SONGS) - 1 SONG_FLAG += 1
SONG_FLAG =
9.鼠标按下事件 event.type == pressed_array = index index == 0:
mouse_down_listener(bg_sound)
上面的都是一些细节的地方... ======================================= 下面是完整代码部分: ======================================= <div class="cnblogs_code">
pygame.locals *
sys random *
=
=
= { : : : :
pygame.mixer: ( pygame.font: (
SCREEN_W = 580
SCREEN_H = 450
SCREEN_DEFAULT_SIZE = (SCREEN_W,SCREEN_H + 20 VOLUME = 5
IMAGE_START_POS = (60,60 IMAGE_END_POS = (245,245 CIRCLES_POS = [(85,350),(150,(555,425 CIRCLR_R = 25
CIRCLR_W = 3
PLAY_FLAG = PREFER_FLAG =
DATA_DIR =
IMAGE_DIR =
BG_IMAGE_DIR =
FONT_DIR =
SOUND_DIR =
BG_IMAGE =
AUTHOR_IMAGE =
BGS = SONG_FLAG = SONGS = [(,,, (,,, (,,, (,,, (,,, (,, (,,, westlift =
VOLUME_POINTS = VOLUME_POINTS_START = VOLUME_RECT_COLORS = |