pygame实现烟雨蒙蒙下彩虹雨


Posted in Python onNovember 11, 2019

学习了一天的深度学习,略有疲惫,我们用pygame搞个小游戏放松放松吧。今天我们的游戏主体是烟雨蒙蒙下彩虹雨,仿佛置身江南水乡。

游戏描述

我们希望看到江南水乡下起彩虹雨。这里背景是江南水乡,烟雨蒙蒙,雨滴颜色五颜六色,大小不一。

解决思路

烟雨蒙蒙彩虹雨的意思很明确,有几个主要元素,那就是烟雨蒙蒙,彩虹雨滴,下雨几个元素和动作。那么,基本思路如下

1.找一张江南水乡烟雨蒙蒙的图片作为背景
2.用圆圈代表雨滴,并把圆圈的大小,颜色进行随机设置,出现五彩斑斓的效果。
3.下雨,即雨滴从上而下持续不断的落下,这就需要pygame里把圆圈放在不同的坐标下绘制出来。

代码实现

具体的实现代码如下:

import pygame
import random
pygame.init()
#加载图片
pic=pygame.image.load('raining.jpg')
#获取图片的长宽
screen_width=pic.get_width()
screen_height=pic.get_height()
#根据图片大小来设置屏幕大小
screen=pygame.display.set_mode([screen_width,screen_height])
#设置彩虹雨的雨滴个数,颜色,位置,大小,落下的速度
numbers=50
colors=[0]*numbers
location_x=[0]*numbers
location_y=[0]*numbers
sizes=[0]*numbers
speed=[0]*numbers
#初始化彩虹雨滴
for i in range(numbers):
 colors[i]=(random.randint(0,255),random.randint(0,255),random.randint(0,255))
 location_x[i]=random.randint(0,screen_width)
 location_y[i]=-random.randint(0,screen_height)
 sizes[i]=random.randint(5,20)
 speed[i]=random.randint(1,5)

keep_going=True
#用Clock实现来控制动画的速度
timer=pygame.time.Clock()

while keep_going:
 for event in pygame.event.get(): #监听事件
 if event.type==pygame.QUIT:
  keep_going=False
 #把图片绘制到屏幕
 screen.blit(pic,(0,0))
 for i in range(numbers):
 pygame.draw.circle(screen,colors[i],(location_x[i],location_y[i]),sizes[i]) #让雨滴画在屏幕上
 location_y[i]=location_y[i]+speed[i]   #雨滴落下,y轴方向

 if location_y[i]>screen_height:    #如果雨滴落到看不见,即超出屏幕的高度
  location_y[i]-=screen_height   #重新设置雨滴的参数
  location_x[i]=random.randint(0,screen_width)
  speed[i] = random.randint(1, 5)
 timer.tick(100)# timer每秒钟滴答100次,因此帧率为100fps
 pygame.display.update() #刷新屏幕

pygame.quit()

效果展示

运行可以看到下图,还是有点那个意思的,静静地看着五彩斑斓的雨滴落下,一身的疲惫也减轻了不少。

pygame实现烟雨蒙蒙下彩虹雨

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中自定义函数的教程
Apr 27 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
谈一谈基于python的面向对象编程基础
May 21 Python
python障碍式期权定价公式
Jul 19 Python
opencv python图像梯度实例详解
Feb 04 Python
Python netmiko模块的使用
Feb 14 Python
Python中SQLite如何使用
May 27 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
Jun 02 Python
python 星号(*)的多种用途
Sep 21 Python
用python批量下载apk
Dec 29 Python
python实现简单文件读写函数
Feb 25 Python
Python实现元素等待代码实例
Nov 11 #Python
如何基于python生成list的所有的子集
Nov 11 #Python
使用django和vue进行数据交互的方法步骤
Nov 11 #Python
如何使用python进行pdf文件分割
Nov 11 #Python
python实发邮件实例详解
Nov 11 #Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 #Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 #Python
You might like
杏林同学录(七)
2006/10/09 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
javascript event 事件解析
2011/01/31 Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
2012/02/03 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
python生成指定长度的随机数密码
2014/01/23 Python
python获取网页状态码示例
2014/03/30 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
利用python获取Ping结果示例代码
2017/07/06 Python
Java分治归并排序算法实例详解
2017/12/12 Python
pandas.cut具体使用总结
2019/06/24 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
Django  ORM 练习题及答案
2019/07/19 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
详解Anaconda 的安装教程
2020/09/23 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
小学生新学期寄语
2014/01/19 职场文书
党员公开承诺书内容
2014/05/20 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
学校捐款活动总结
2015/05/09 职场文书
详解非极大值抑制算法之Python实现
2021/06/28 Python
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记