使用Python的pygame库实现下雪的效果

使用Python的pygame库实现下雪的效果

关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520

先给出效果图:

源码如下:

import pygame
import random# 初始化pygame
pygame.init()# 设置屏幕尺寸
width, height = 800, 600
screen = pygame.display.set_mode((width, height))# 设置雪花属性
snowflakes = []
for i in range(50):x = random.randrange(0, width)y = random.randrange(0, height)speed = random.uniform(1, 3)size = random.randint(3, 6)  # 雪花大小参数snowflakes.append([x, y, speed, size])# 循环直到用户关闭窗口
running = True
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = False# 填充屏幕颜色screen.fill((200, 200, 200))  # (0, 0, 0)黑色;(200, 200, 200)阴天# 绘制雪花for flake in snowflakes:pygame.draw.circle(screen, (255, 255, 255), (int(flake[0]), int(flake[1])), flake[3])  # 使用大小参数绘制雪花flake[1] += flake[2]  # 移动雪花if flake[1] > height:flake[1] = random.randrange(-50, -10)flake[0] = random.randrange(0, width)# 更新屏幕pygame.display.flip()# 控制帧率pygame.time.Clock().tick(30)# 退出pygame
pygame.quit()

下面给出改进版

效果图:

使用一张背景图片(我这里文件名:snow_background.jpg),和代码文件放在同一目录下

 源码如下:

import pygame
import random# 初始化pygame
pygame.init()# 设置屏幕尺寸
width, height = 800, 600
screen = pygame.display.set_mode((width, height))# 加载背景图片
background = pygame.image.load('snow_background.jpg')
background = pygame.transform.scale(background, (width, height))# 设置雪花属性
snowflakes = []
for i in range(50):x = random.randrange(0, width)y = random.randrange(0, height)speed = random.uniform(1, 3)size = random.randint(3, 6)  # 雪花大小参数snowflakes.append([x, y, speed, size])# 循环直到用户关闭窗口
running = True
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = False# 填充屏幕颜色#screen.fill((200, 200, 200))  # (0, 0, 0)黑色;(200, 200, 200)阴天# 绘制背景图片screen.blit(background, (0, 0))# 移动雪花并重新绘制for flake in snowflakes:pygame.draw.circle(screen, (255, 255, 255), (int(flake[0]), int(flake[1])), flake[3])  # 使用大小参数绘制雪花flake[1] += flake[2]  # 移动雪花if flake[1] > height:flake[1] = random.randrange(-50, -10)flake[0] = random.randrange(0, width)# 更新屏幕pygame.display.flip()# 控制帧率pygame.time.Clock().tick(30)# 退出pygame
pygame.quit()

附:RGB 颜色表   https://www.codeeeee.com/color/rgb.html
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/415772.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【办公类-21-03】20240119 提取不连续的男女学号 set()和list法

背景需求:了解班级幼儿性别比例 查看点名册,发现中4班最初的学号是按照先男后女的方式排列,但是随着幼儿转出,空出一些学号,于是新插班的孩子就插入空的学号,空格插完了,就排在学号尾部。 我想…

「优选算法刷题」:盛最多水的容器

一、题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器…

【AI接口】语音版、文心一言大模型和AI绘图、图片检测API

文章目录 一、语音版大模型AI1、接口2、请求参数3、请求参数示例4、接口返回示例 二、AI图片鉴黄合规检测API1、接口2、请求参数3、请求参数示例4、接口返回示例5、报错说明6、代码开源 三、人工智能AI绘画API1、接口2、请求参数3、请求参数示例4、接口返回示例5、AI绘画成果展…

字符串系列之滑动窗口

大家好,滑动窗口算法一般是作用在字符串或者数组上,通过不断的滑动逻辑窗口,在特定窗口大小内进行计算的过程。滑动窗口的方式可以降低时间复杂度,从而减短计算的执行时间。 比如说在字符串s"5189623196" 中&#xff0…

【51单片机Keil+Proteus8.9】AT89C51+7段数码管两位计数器

两位计数器显示 设计思路 电路设计 使用AT89C51单片机,外部引出两个管脚P3^3和P3^4当作按钮分别作为start和stop,对计时状态进行控制,由于是两位计数器,引出两个管脚P3^0和P3^1作为两个数码管的片选信号,工作时快速…

每日温度00

题目链接 每日温度 题目描述 注意点 列表对应位置的输出为:要想观测到更高的气温如果气温在这之后都不会升高,请在该位置用 0 来代替 解答思路 利用栈先进后出的特点将低温度的下标存储到栈中,如果当前温度比栈顶下标对应温度更高&#…

2024--Django平台开发-订单项目管理用户认证+动态菜单+权限控制(十三)

day13 订单管理项目开发 1.表结构设计 1.1 abstract类 from django.db import modelsclass ActiveBaseModel(models.Model):active models.SmallIntegerField(verbose_name"状态", default1, choices((1, "激活"), (0, "删除"),))class Meta:…

【Java】HttpServlet类中前后端交互三种方式(query string、form表单、JSON字符串)

在前后端的交互中,前端通过以下三种方式来与后端进行交互🌟 ✅query string ✅form表单 ✅JSON字符串 下面我们将书写这三种方式的后端代码并进行讲解 1、Query String QueryString即在url中写入键值对,一般用doGet方法进行交互 代码如下 …

『MySQL快速上手』-⑩-索引特性

文章目录 1.索引的作用2.索引的理解建立测试表插入多条记录查看结果 2.1 MySQL与磁盘交互的基本单位2.1 为何IO交互要是 Page2.3 理解单个Page2.4 理解多个Page2.5 页目录2.6 单页情况2.7 多页情况2.8 B vs B2.9 聚簇索引 vs 非聚簇索引非聚簇索引聚簇索引 3.索引操作3.1 创建主…

Redis实战之-分布式锁

一、基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行…

『Open3D』1.10 Tensor数据处理

open3d中实现了自身的数据类型,用于open3d中内部算法的数值计算,但基础使用上与numpy类似。 目录 1、tensor创建 2、tensor数据属性 3、 Tensor数据在CPU与GPU上的转换

51单片机中断系统编程

一.外部中断 1.编程思想 中断准备:中断初始化函数打开中断开关 ,选择中断传输方式中断处理:为了便于观察,让我们知道单片机进入中断处理函数,在这里我们选择打开流水灯电路搭建:由于P3^3引脚不便直接接地…