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 28 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
python检测是文件还是目录的方法
Jul 03 Python
python计算文本文件行数的方法
Jul 06 Python
Python Numpy计算各类距离的方法
Jul 05 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
Python 求数组局部最大值的实例
Nov 26 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
浅析关于Keras的安装(pycharm)和初步理解
Oct 23 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
PHP中显示格式化的用户输入
2006/10/09 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
Python argparse模块使用方法解析
2020/02/20 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
python中如何打包用户自定义模块
2020/09/23 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
学校采购员岗位职责
2014/01/02 职场文书
党章学习思想汇报
2014/01/14 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
男方婚礼答谢词
2015/01/20 职场文书
文案策划岗位职责
2015/02/11 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书