用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.pswp.cn/news/539156.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539156.shtml
英文地址,請注明出處:http://en.pswp.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 (該博主的網站不錯,尤其論文快…