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重新引入被覆盖的自带function
Jul 16 Python
基python实现多线程网页爬虫
Sep 06 Python
简析Python的闭包和装饰器
Feb 26 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 Python
Python实现简单的用户交互方法详解
Sep 25 Python
numpy np.newaxis 的实用分享
Nov 30 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
python程序文件扩展名知识点详解
Feb 27 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
OpenCV-Python实现油画效果的实例
Jun 08 Python
Python使用OpenCV实现虚拟缩放效果
Feb 28 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会话处理的10个函数
2015/08/11 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
网页图片延时加载的js代码
2010/04/22 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
Python列表(list)常用操作方法小结
2015/02/02 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
公司活动策划方案
2014/01/13 职场文书
教师个人剖析材料
2014/02/05 职场文书
旅游安全协议书
2014/04/21 职场文书
大学学风建设方案
2014/05/04 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS