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网络编程学习笔记(二):socket建立网络客户端
Jun 09 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
python微信跳一跳系列之色块轮廓定位棋盘
Feb 26 Python
Python实现的质因式分解算法示例
May 03 Python
《与孩子一起学编程》python自测题
May 27 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 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 多线程上下文中安全写文件实现代码
2009/12/28 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
php操作mongoDB实例分析
2014/12/29 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
javascript web对话框与弹出窗口
2009/02/22 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
js实现扫雷源代码
2020/11/27 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
Python常见数据结构详解
2014/07/24 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
二年级体育教学反思
2014/01/15 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
宾馆安全管理制度
2015/08/06 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server