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版本的仿windows计划任务工具
Apr 30 Python
解决python大批量读写.doc文件的问题
May 08 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
python实现自动登录后台管理系统
Oct 18 Python
使用python绘制二元函数图像的实例
Feb 12 Python
pandas进行时间数据的转换和计算时间差并提取年月日
Jul 06 Python
python向图片里添加文字
Nov 26 Python
Jupyter Notebook远程登录及密码设置操作
Apr 10 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
python编写实现抽奖器
Sep 10 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 Python
Pytorch DataLoader shuffle验证方式
Jun 02 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中explode与split的区别介绍
2012/10/03 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
javascript 模拟点击广告
2010/01/02 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
Position属性之relative用法
2015/12/14 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
JS如何设置iOS中微信浏览器的title
2016/11/22 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
python机器人运动范围问题的解答
2019/04/29 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
python 从list中随机取值的方法
2020/11/16 Python
.NET面试10题
2014/02/24 面试题
搞笑征婚广告词
2014/03/17 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
同乡会致辞
2015/07/30 职场文书
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技