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实现批量转换文件编码的方法
Jul 28 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
对python指数、幂数拟合curve_fit详解
Dec 29 Python
Python符号计算之实现函数极限的方法
Jul 15 Python
对python 树状嵌套结构的实现思路详解
Aug 09 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
Python常见反爬虫机制解决方案
Jun 01 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
python与pycharm有何区别
Jul 01 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
详解pycharm自动import所需的库的操作方法
Nov 30 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
使用Apache的rewrite技术
2006/06/22 PHP
php 破解防盗链图片函数
2008/12/09 PHP
浅析PHP绘图技术
2013/07/03 PHP
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
Python计算回文数的方法
2015/03/11 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
python对XML文件的操作实现代码
2020/03/27 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
酒吧创业计划书
2014/01/18 职场文书
办公室综合文员岗位职责范本
2014/02/13 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
2014年督导工作总结
2014/11/19 职场文书
担保书格式
2015/01/20 职场文书
重阳节活动主持词
2015/07/04 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
Java常用函数式接口总结
2021/06/29 Java/Android
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS