前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python绘制漫天的雪花,漫步天涯

Python绘制漫天的雪花,漫步天涯

作者头像
阿黎逸阳
发布2020-09-08 16:39:32
1.5K0
发布2020-09-08 16:39:32
举报

漫天的雪花,漫步天涯,一直是我认为很浪漫的画面。

经过研究终于用Python实现啦!

本文就跟大家一起来看下,加了背景图片和音乐下雪图吧。

一、漫天雪花效果图

1 漫天的雪花漫步天涯

雪意寒凉,冰冷了几世千年的轮回。繁华消落成颗颗泛黄泪珠,是凋零,还是化腐朽为神奇?

2 并肩看雪景

雪落在湖泊,像给安静的湖面撒上了冷凝剂,那千里冰封的美景,我只想和你并肩而立。

3 执子之手与子偕老

漫天雪花飞舞,只想执子之手,一不小心白了头。

二、漫天雪花实现原理

漫天的雪花漫步天涯代码实现分为以下三步:

  • step1:绘制下雪的雪花,控制下降的速度和偏移量。
  • step2:添加下雪的背景图片。
  • step3:播放背景音乐,控制暂停和重新开始的按钮。

接下来看下具体的实现代码。

三、漫天雪花实现分步骤讲解

1 加载包

先把绘制漫天雪花需要的包加载好。

代码语言:javascript
复制
# -*- coding: utf-8 -*-

"""
代码用途:模拟漫天的雪花漫步天涯
作者:阿黎逸阳

"""
import pygame
import random
import os
from turtle import *
from pygame.locals import *

2 设置窗口的大小

可以设置全屏显示窗口,也可以根据背景图片自定义窗口大小。

代码语言:javascript
复制
os.chdir(r'F:\微信公众号\Python\42_python下雪')
pygame.init()          #初始化pygame
SIZE = (790, 430)      #设置屏幕宽长,根据背景图片调整(或者调整图片)
bg_size = width, height = 300, 200         #设置开始和关闭界面窗口
bg_rgb = (255, 255, 255)
screen = pygame.display.set_mode(bg_size)
screen = pygame.display.set_mode(SIZE)
screen1 = pygame.display.set_mode(SIZE)
pygame.display.set_caption("漫天的雪花,漫步天涯")

本文添加了背景音乐,点击背景图片可以暂停音乐,再点击一下可以重新播放。

3 控制雪花的下降速度并添加背景图片

可以根据自己的喜好更改背景图片。

代码语言:javascript
复制
bg = pygame.image.load('两个人雪中漫步V3.jpg')
snow_list = []         #雪花列表
for i in range(300):
    x_site = random.randrange(0, SIZE[0])   #雪花圆心位置
    y_site = random.randrange(0, SIZE[1])   #雪花圆心位置
    X_shift = random.randint(-1, 1)         #x轴偏移量
    radius = random.randint(4, 6)           #半径和y周下降量
    snow_list.append([x_site, y_site, X_shift, radius])  
clock = pygame.time.Clock()                 #创建设置帧率对象
track = pygame.mixer.music.load('唯美时光静好.mp3')  # 加载音乐文件
pygame.mixer.music.play()                            # 开始播放音乐流
pygame.mixer.music.fadeout(600000)           #设置音乐多久慢慢淡出结束
play_image = pygame.image.load("两个人雪中漫步V3.jpg").convert_alpha()   # 创建播放图片surface对象
pause_image = pygame.image.load("两个人雪中漫步V3.jpg").convert_alpha()  # 创建暂停图片surface对象
pause_rect = pause_image.get_rect()         #获取播放矩形框
print(pause_rect.width,pause_rect.height)   #获取暂停矩形框
pause_rect.left, pause_rect.top = (width - pause_rect.width) // 2, (height - pause_rect.height) // 2
pause = False        # 定义播放标志位

部分参数解析:

bg:添加的背景图片,可替换成你喜欢的背景。

snow_list:存放雪花的位置、半径、偏移距离、下降距离。

track:添加背景音乐,可替换成你喜欢的音乐。

pause_image:暂停按钮使用的图片,本文直接用的背景图片。

4 通过循环实现动态下雪

更新雪花的位置,实现动态下雪的效果。

代码语言:javascript
复制
while True:
  for event in pygame.event.get():
    if event.type == QUIT:
      sys.exit()
        
  screen1.blit(bg, (0, 0))                #图片背景
  for i in range(len(snow_list)):
    pygame.draw.circle(screen1, (255, 255, 255), snow_list[i][:2], snow_list[i][3]-3)
    snow_list[i][0] += snow_list[i][2]
    snow_list[i][1] += snow_list[i][3]
    if snow_list[i][1] > SIZE[1]:        #判断雪花位置是否超出屏幕,是的话重设位置
      snow_list[i][0] = random.randrange(0, SIZE[0])
      snow_list[i][1] = random.randrange(0, SIZE[1])
  pygame.display.flip()  #刷新屏幕
  clock.tick(20)   
pygame.quit()              #退出 

部分参数解析:

pygame.draw.circle:参数分别为(Surface, color, pos, radius, width=0)

Surface:表示对象,代表窗口屏幕。

color:圆的颜色。

pos:圆心位置。

radius:圆的半径。

width:边框的宽度,如果设置为 0 则表示填充该图形。

至此,漫天雪花漫步天涯的代码讲解全部结束,如需全量可执行代码可以在公众号中回复“漫天雪花”,即可免费获取。

参考文献:

https://zhuanlan.zhihu.com/p/93245919 https://blog.csdn.net/python36/article/details/82838957 https://zhidao.baidu.com/question/1452769866435471900.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档