加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

pygame系列_原创百度随心听音乐播放器_完整版

发布时间:2020-12-17 00:21:47 所属栏目:Python 来源:网络整理
导读:程序名: 解释:pygame+music 之前发布了自己写的小程序:百度随心听 音乐播放器的一些效果图 你可以去到这里再次看看效果: pygame系列_百度随心听_完美的UI设计 这个程序的灵感来自于百度随心听 说明: ? ? ?? ?动作按钮全部是画出来的,没有用到任何图片

程序名:

解释:pygame+music

之前发布了自己写的小程序:百度随心听音乐播放器的一些效果图

你可以去到这里再次看看效果:

pygame系列_百度随心听_完美的UI设计

这个程序的灵感来自于百度随心听

hongten_pymusic

说明:

? ? ???动作按钮全部是画出来的,没有用到任何图片

? ? ? ?用到图片的只有:背景,歌手图片,作者图片

经过一个阶段的调试,现在算是可以拿上台面和大家交流

hongten_pymusic

功能介绍:

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 =  p  range(170,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 
 screen = pygame.display.set_mode(SCREEN_DEFAULT_SIZE,32 bg = author_image = 
 SONG_ARRAY = SONG_IMAGE =  song       SONG_IMAGE.append(pygame.image.load(os.path.join(DATA_DIR,SONGS[song][3 
 font = pygame.font.Font(os.path.join(DATA_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 
       
                       (255,  
       points=[(77,350  
                          Rect(77,23                        Rect(88,23 
      pygame.draw.circle(screen,CIRCLES_POS[1     points=[(138,(162,363  
      pygame.draw.circle(screen,CIRCLR_W)
     pygame.draw.circle(screen,3                        Rect(200,6                        Rect(204,20                        Rect(210,20                        Rect(217,20                        Rect(223,20                        Rect(204,5 
      pygame.draw.circle(screen,CIRCLES_POS[3     points_one =[(270,343),(270,357),(277,350     points_two =[(277,(284,350                          Rect(284,343,15 
       pygame.draw.circle(screen,CIRCLR_W)
                       (255,                      Rect(418,154      screen.blit(author_image,250      luck = font_song_title.render(      screen.blit(luck,416 
                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  
                     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                  (,>                 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 =                 
                 
      color = (255,255     color_red = (230     
                   
                  
      
  
      
                       (255,                      Rect((VOLUME_POINTS_START[-1                            VOLUME_POINTS_START[-1][1                           (VOLUME_POINTS[-10][0] - VOLUME_POINTS_START[-1                            20     
      v  range(VOLUME+1          v >                                Rect((VOLUME_POINTS_START[-                                    VOLUME_POINTS_START[-v][1                                   (VOLUME_POINTS[-v][0] - VOLUME_POINTS_START[-                                    20 
      title = font_song_title.render(SONGS[SONG_FLAG][1],165     songer = font_song.render(SONGS[SONG_FLAG][2],255     screen.blit(title,(320,60     screen.blit(songer,110 
      pygame.draw.line(screen,(165,42,42     
     music_info =  + str(len(SONGS)) + + str(SONG_FLAG + 1     text = font.render(music_info,255     screen.blit(text,SCREEN_H+5     
     author_info = font.render(,255     screen.blit(author_info,(SCREEN_W - 160,SCREEN_H+5     
     volume_text = font.render( + str(VOLUME),255     screen.blit(volume_text,(SCREEN_W - 310,SCREEN_H+5     
      
      pic =     bg_sound =     bg_sound.set_volume(0.1 *        event           event.type ==            event.type ==              event.key ==                 
              event.key ==                 
              event.key ==                  VOLUME >                     VOLUME -= 1
              event.key ==                  VOLUME <= 9                     VOLUME += 1
          event.type ==             
                     
          event.type ==             pressed_array =              index                                        index == 0: 
  
     
      
      
      
      
     screen.blit(pic,(62.5,62.5     pygame.display.update()

你在运行的时候,肯恩会遇到一些问题,系统找不到音乐和图片....

这个由于文件中的音乐,字体和图片有一点大,所以我把图片和音乐删掉..你可以进行添加即可

还请大家给我想想办法,我好上传源文件给大家伙下载...

========================================================

More reading,and english is important.

I'm Hongten

大哥哥大姐姐,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。谢谢。Hongten博客排名在100名以内。粉丝过千。Hongten出品,必是精品。

E | hongtenzone@foxmail.com ?B |?

========================================================

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读