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 相关文章推荐
使用70行Python代码实现一个递归下降解析器的教程
Apr 17 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
python如果快速判断数字奇数偶数
Nov 13 Python
关于python中的xpath解析定位
Mar 06 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
Python如何读取、写入JSON数据
Jul 28 Python
python温度转换华氏温度实现代码
Dec 06 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 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
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
php curl发送请求实例方法
2019/08/01 PHP
JQuery从头学起第三讲
2010/07/06 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
使用Python3制作TCP端口扫描器
2017/04/17 Python
python中实现k-means聚类算法详解
2017/11/11 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
详解Python3 基本数据类型
2019/04/19 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
编程实现去掉XML的重复结点
2014/05/28 面试题
《狐假虎威》教学反思
2014/02/07 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
三八妇女节慰问信
2015/02/14 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js