Python程式設計從入門到實踐練習(雨滴)

2021-12-30 02:56:22 字數 3316 閱讀 6217

雨滴:尋找一幅雨滴影象,並建立一系列整齊排列的雨滴。讓這些雨滴往下落,直到到達螢幕後消失。

先說今天的問題:

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

效果圖:

初始:

下落:

Python 程式設計 從入門到實踐

1.官網安裝 3.環境配置 務必選中核取方塊add python to path 4.檢視 啟動python版本的命令 python 執行 print hello python world 5.終端執行x.py檔案 python x.py 7.檢視當前目錄中的所有檔案的命令 dir windows系...

Python程式設計從入門到實踐 基礎入門

python程式設計從入門到實踐 基礎入門 1 python中的變數 2 python首字母大寫使用title 方法,全部大寫upper 方法,全部小寫lower 方法 3 python中字串拼接使用 號 4 python中刪除字串的空格 刪除末尾空格的rstrip 刪除開頭空格的lstrip 刪除...

Python程式設計 從入門到實踐 1

內容總結自 python程式設計 從入門到實踐 安裝python3 安裝文字編輯器sublime text並配置python3環境 安裝sublime text tools new build system 將 untitled.sublime build 文件中的所有內容刪除,輸入以下內容 注意,...