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实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
python实现根据窗口标题调用窗口的方法
Mar 13 Python
使用Python脚本将Bing的每日图片作为桌面的教程
May 04 Python
Python中operator模块的操作符使用示例总结
Jun 28 Python
基于python的Tkinter编写登陆注册界面
Jun 30 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
Python3.4解释器用法简单示例
Mar 22 Python
Python中print和return的作用及区别解析
May 05 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 Python
如何在python中实现ECDSA你知道吗
Nov 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
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
Python中几个比较常见的名词解释
2015/07/04 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
python爬取微信公众号文章的方法
2019/02/26 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
用Python写一个自动木马程序
2019/09/17 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
Python @property装饰器原理解析
2020/01/22 Python
python生成并处理uuid的实现方式
2020/03/03 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
《鞋匠的儿子》教学反思
2014/03/02 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
企业法人代表任命书
2014/06/06 职场文书
劳模先进事迹材料
2014/12/24 职场文书
导游词之峨眉山
2019/12/16 职场文书
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android
Node.js实现断点续传
2021/06/23 Javascript
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers