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 解析html之BeautifulSoup
Jul 07 Python
Python的ORM框架SQLObject入门实例
Apr 28 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
实例讲解Python爬取网页数据
Jul 08 Python
flask中过滤器的使用详解
Aug 01 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
python配置grpc环境
Jan 01 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
Python实现钉钉订阅消息功能
Jan 14 Python
20行Python代码实现视频字符化功能
Apr 13 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
JS小框架 fly javascript framework
2009/11/26 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
python中类的一些方法分析
2014/09/25 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
Python列表的切片实例讲解
2019/08/20 Python
Python文件路径名的操作方法
2019/10/30 Python
安装PyInstaller失败问题解决
2019/12/14 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
超越自我演讲稿
2014/05/21 职场文书
安全生产工作汇报
2014/10/28 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
学校党支部承诺书
2015/04/30 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL