抚州 提供网站建站 公司,中国建设银行下载安装,韩国flash网站,湖南专业seo优化雨滴#xff1a;寻找一幅雨滴图像#xff0c;并创建一系列整齐排列的雨滴。让这些雨滴往下落#xff0c;直到到达屏幕后消失。
先说今天的问题#xff1a;
1.在更改函数形参时#xff0c;调用的时候也要修改#xff0c;否则会出现AttributeError
值得注意的是#xff1a…雨滴寻找一幅雨滴图像并创建一系列整齐排列的雨滴。让这些雨滴往下落直到到达屏幕后消失。
先说今天的问题
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
效果图
初始下落