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 03 Python
python结合API实现即时天气信息
Jan 19 Python
Python内置模块hashlib、hmac与uuid用法分析
Feb 12 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
Python函数any()和all()的用法及区别介绍
Sep 14 Python
如何利用python给图片添加半透明水印
Sep 06 Python
python查看数据类型的方法
Oct 12 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 Python
用Python创建简易网站图文教程
Jun 11 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邮件专题
2006/10/09 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
Python中针对函数处理的特殊方法
2014/03/06 Python
python排序方法实例分析
2015/04/30 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Python高斯消除矩阵
2019/01/02 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
python模拟实现分发扑克牌
2020/04/22 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
新加坡交友网站:be2新加坡
2019/04/10 全球购物
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
一年级数学教学反思
2014/02/01 职场文书
校园安全广播稿
2014/02/08 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
Go语言测试库testify使用学习
2022/07/23 Golang