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中的zip函数使用示例
Jan 29 Python
Python实现的rsa加密算法详解
Jan 24 Python
python游戏地图最短路径求解
Jan 16 Python
详解python编译器和解释器的区别
Jun 24 Python
python取余运算符知识点详解
Jun 27 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
Python基于Tkinter编写crc校验工具
May 06 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
python 如何快速复制序列
Sep 07 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
javascript一些实用技巧小结
2011/03/18 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
Node.js事件的正确使用方法
2019/04/05 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
使用python加密自己的密码
2015/08/04 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
python爬虫 正则表达式解析
2019/09/28 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
CSS3正方体旋转示例代码
2013/08/08 HTML / CSS
商务会议邀请函
2014/01/09 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
增员口号大全
2014/06/18 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
病房管理制度范本
2015/08/06 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书