用python画雨滴_Python编程从入门到实践练习(雨滴)

雨滴:寻找一幅雨滴图像,并创建一系列整齐排列的雨滴。让这些雨滴往下落,直到到达屏幕后消失。

先说今天的问题:

1.在更改函数形参时,调用的时候也要修改,否则会出现AttributeError

值得注意的是:每当添加进新的代码,要检查函数传递的参数是否对应一致,函数本身与调用它的时候都要检查

2.愚蠢的错误:把创建整齐雨滴的函数写到循环体中去了,结果一直出现重叠,达不到预期效果,搞了半天眼睛快瞎了才发现,唉!

主程序 display

import pygame

from settings import Settings

from rain import Rain

import func as f

from pygame.sprite import Group#####

def display():

"""主函数----显示雨滴效果"""

pygame.init()

settings = Settings()

screen = pygame.display.set_mode((settings.screen_width, settings.screen_height))

pygame.display.set_caption('Raining')

rains = Group()####

f.create_rains(settings, screen, rains)#####

while True:

f.check_events()

screen.fill(settings.bg_color)

f.change_direction(settings, rains)

rains.draw(screen)

pygame.display.flip()

display()

函数模块func

import pygame

import sys

from rain import Rain

def check_events():

"""按键检查"""

for event in pygame.event.get():

if event.type == pygame.QUIT:

sys.exit()

def get_col_numbers(settings, rain):#对于每一行来说,变化的是x坐标,列在变化

"""一行可以存放的雨滴数"""

col_numbers = int(settings.screen_width / (2 * rain.rect.width))

return col_numbers

def get_row_numbers(settings, rain):

"""可存放雨滴的行数"""

row_numbers = int(settings.screen_height / (1 * rain.rect.height))

return row_numbers

def create_rain(settings, screen, rains, col_number, row_number):

rain = Rain(settings, screen)

rain_width = rain.rect.width

rain.x = rain_width + 2 * rain_width * col_number

rain.rect.x = rain.x#rect存放整数

rain.rect.y = rain.rect.y + 2 * rain.rect.height * row_number

rains.add(rain)

def create_rains(settings, screen, rains):

rain = Rain(settings, screen)#这句是要写的,不写的话get_col_numbers()中的rain将出现NameError

col_numbers = get_col_numbers(settings, rain)

row_numbers = get_row_numbers(settings, rain)

for row_number in range(row_numbers):

for col_number in range(col_numbers):

create_rain(settings, screen, rains, col_number, row_number)

def change_direction(settings, rains):

for rain in rains.sprites():

rain.rect.y += settings.drop_speed

rain类:

import pygame

from pygame.sprite import Sprite

class Rain(Sprite):

"""雨滴"""

def __init__(self, settings, screen):

super().__init__()

self.screen = screen

self.settings = settings

self.image = pygame.image.load('rain.bmp')

self.rect = self.image.get_rect()

self.y = float(self.rect.y)

def blitme(self):

self.screen.blit(self.image, self.rect)

def check_edges(self):

"""如果雨滴位于屏幕边缘就返回True"""

if self.rect.top >= self.screen.rect.bottom:

return True

settings类:

class Settings():

"""设置所有设置的类"""

def __init__(self):

self.screen_width = 1200

self.screen_height = 600

self.bg_color = (255, 255, 255)

self.drop_speed = 1

效果图:

初始:

20180502094824949.bmp

下落:

20180502094825957.bmp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python你是否也走进了这个误区了_Python是不是被严重高估了?

是python被曲解了python有非常强的局限性,那就是只适合在io和网络或其他整合组件上耗费大量时间的快速迭代跨平台需求,比如爬虫和下载快速迭代才能显示出python作为脚本语言不用编译的优势,而io和网络的大量时间消耗才能掩盖python本身糟糕透…

Hive文件格式

Hive有四种文件格式:TextFile,SequenceFile,RCFile,ORC TextFile 默认的格式,文本格式。 SequenceFile 简介 见:http://blog.csdn.net/zengmingen/article/details/52242768 操作 hive (zmgdb)>cre…

learnpythonthehardway下载_Python【十一】:阶段小结

今天来将前一段时间学习的Python的知识系统地梳理一遍,接下来开始实际的编程实践了。 一、Python实验环境搭建 使用Python编程,首先要有一个开发环境,如同C/C上又VS2008家族一样,Linux/MacOS上的部署情况这里不再详述,…

python使用ssh 中文_Python3制作简易SSH登录工具

下载W3Cschool手机App,0基础随时随地学编程>>戳此了解导语做这个的起因大概是:电脑里的Xshell不知道为啥突然显示“评估期已过”之类的提示。。。记得之前认证学校邮箱后是可以免费使用的。。。苍天绕过谁。。。想起上次认证学校邮箱过了N个小时才…

hive java导入CVS

原文:http://bbs.chinahadoop.cn/thread-5343-1-1.html ---------------------------------------------------------------------------------- 本文的目的是hive读取cvs文件,忽略字段中‘\,’,最终还是以,来分割文本 cvs格式是以逗号,隔开…

Django 博客教程(三):创建应用和编写数据库模型

创建 django 博客应用 在上一章节中我们创建了 django 博客的工程,并且成功地运行了它。然而这一切都是 django 为我们创建的项目初始内容,django 不可能为我们初始化生成我们需要的博客代码,这些功能性代码都得由我们自己编写。 django 鼓励…

python将16进制字符串转换为整数_Python 16进制与字符串的转换

电脑上装了Python2.7和3.3两个版本,平时运行程序包括在Eclipse里面调试都会使用2.7,但是由于某些原因在cmd命令行中输入python得到的解释器则是3.3, 一直没对此做处理,因为这样可以对两个版本的差异有一个测试,而且虚拟机里面是2.…

python多个文件打包成exe_多个py文件生成一个可运行exe文件

一、概述 目前有一个python脚本,需要在别的电脑中运行,安装python环境太麻烦,封装成exe文件,运行比较方便。 二、演示 环境说明 python版本:3.7.9 操作系统:windows 10 安装模块 pip3 installer pyinstaller 封装 新建目录test,目录结构如下: ./├── conf.py └── …

CSV文件的转义处理

原文:http://blog.csdn.net/maqingli20/article/details/7095132 ------------------------------------------------------------------------------------ CSV文件是一种适合程序格式化输出数据的文件格式。它使用英文逗号作为列分隔符,文件可以直接用…

华为读取版本exe_关于esrv_svc.exe和SurSvc.exe疑似泄露用户信息的猜测

封面图片来源:https://www.weibo.com/1885454921/GpBhR3vpk?typerepost#_rnd1573301201348抱歉,写网页文章的次数不多,排版没研究过,请原谅。下面是正题:由来:最初是借由火绒的自定义防护规则,…

gitlab ci mysql_php-Gitlab CI:在阶段之间保留MySQL数据

根据Gitlab问题页面:Share service between build stages.Gitlab-CI的设置方式如下:each job is run in each job is run independently of the others,including potentially running on different machines. And the servicesare run locally on each …

flask 部署_只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型

摘要: 一杯茶的功夫部署完成机器学习模型!在生产环境中部署机器学习模型是数据工程中经常被忽视的领域。网上的大多数教程/博客都侧重于构建、训练和调整机器学习模型。如果它不能用于实际的预测,那么它又有什么用呢? 接下来了解一…

Hive 导入CSV文件

SerDe 介绍 Hive 使用如下FileFormat 类读写 HDFS files: TextInputFormat/HiveIgnoreKeyTextOutputFormat: 读写普通HDFS文本文件. SequenceFileInputFormat/SequenceFileOutputFormat: 读写SequenceFile格式的HDFS文件. Hive 使用如下SerDe 类(反)序列化数据: MetadataTyp…

腾讯云mysql架构_一个数据库存储架构的独白

本文由云社区发表本文作者:许中清,腾讯云自研数据库CynosDB的分布式存储CynosStore负责人。从事数据库内核开发、数据库产品架构和规划。曾就职于华为,2015年加入腾讯,参与过TBase(PGXZ)、CynosDB等数据库产品研发。专注于关系数据…

Hive高级函数

Hive的函数太多了。用法和sql的差不多。 简单查询 select ... from...where... 使用各种函数 hive>show functions;//查看所有函数 hive>describe function explode;//查看函数的使用方法 LIMIT语句 列别名 嵌套select语句 标准函数: reverse() upper() ...…

groupby索引有效吗_SQL IN 一定走索引吗?

摘要IN 一定走索引吗?那当然了,不走索引还能全部扫描吗?好像之前有看到过什么Exist,IN走不走索引的讨论。但是好像看的太久了,又忘记了。哈哈,如果你也忘记了MySQL中IN是如何查询的,就来复习下吧。问题问题…

mysql函数使用场景_mysql的函数和存储过程的比较,以及在实际场景中的使用案例...

一.存储过程和函数的区别函数调用有返回值存储过程调用用call语句,函数调用直接饮用函数名参数IN,OUT,INOUT只适用于存储过程,对函数而言所有参数默认都是输入参数IN用于把数值传入到存储过程中OUT用于输出参数将数值传递给调用者…

hive性能调优

原文:http://www.tuicool.com/articles/rMvQvm ---------------------------------------------------------------------- limit 限制调整 -- 因为使用 limit 语句时候,是先执行整个查询语句,然后再返回部分结果的 set hive.limit.optimize…

推荐系统之 BPR 算法及 Librec的BPR算法实现【1】

【推荐系统之 BPR 算法】 1、关于BPR的论文原文: BPR: Bayesian Personalized Ranking from Implicit Feedback 2、参考1:论文快读 - BPR: Bayesian Personalized Ranking from Implicit Feedback (该博主的网站不错,尤其论文快…