python关于Group组的错误

  • import pygame
    from pygame.sprite import Group
    from settings import Settings
    import rain_function as rf
    from rainclass import Rain
    
    def run():
    	
    	pygame.init()
    	set2 = Settings()
    	screen = pygame.display.set_mode((set2.screen_width, set2.screen_height))
    	pygame.display.set_caption('rain')
    	
    	rains = Group()
    	
    	
    	rain = Rain(set2, screen)
    	rf.create_rain_rain(rains, set2, screen)
    	
    	while True:
    		
    		rf.circulate()
    		screen.fill(set2.bgcolor)
    		rf.update_rains(rains)
    		
    		rains.draw(screen)
    		print(len(rains))
    		'''
    		for rain in rains.sprites():
    			rain.declineee()
    		'''
    		pygame.display.flip()
    		
    		
    		
    		
    
    
    run()
    
    
    
    class Settings():
    	
    	def __init__(self):
    		
    		self.screen_height = 800
    		self.screen_width = 1200
    		self.bgcolor = 0, 0, 0
    		self.rain_speed = 2
    		
    		
    
    import pygame
    import sys
    from rainclass import Rain
    def circulate():
    	for event in pygame.event.get():
    		if event.type == pygame.QUIT:
    			sys.exit()
    
    
    def get_available_space_x(set2, width):
    	available_space = set2.screen_width - 2 * width
    	line_number = int(available_space / (2 * width))
    	return line_number
    	
    def get_available_space_y(set2, height):
    	space_y = set2.screen_height - 2 * height
    	y_number = int(space_y / (2 * height))
    	return y_number
    
    	
    def create_rain(rains, set2, screen,  number, row_number):
    	
    	
    	rain = Rain(set2, screen)
    	width = rain.rect.width
    	rain.x = width + 2 * width * number
    	rain.rect.x = rain.x
    	rain.rect.y = rain.rect.height + rain.rect.height * 2 * row_number
    	rains.add(rain)
    
    def create_rain_rain(rains, set2, screen):
    	
    	rain = Rain(set2, screen)
    	line_number = get_available_space_x(set2, rain.rect.width)
    	y_number = get_available_space_y(set2, rain.rect.height)
    	
    	for row_number in range(y_number):
    		for number in range(line_number):
    			create_rain(rains, set2, screen, number, row_number)
    	print(line_number)
    	print(y_number)
    def update_rains(rains):
    	
    	rains.declineee()
    
    import pygame
    from pygame.sprite import Sprite
    class Rain(Sprite):
    	def __init__(self, set2, screen):
    		super(Rain, self).__init__()
    		
    		self.screen = screen
    		
    		self.image = pygame.image.load('image/rain2.bmp')
    		self.rect = self.image.get_rect()
    		
    		#位置
    		self.rect.x = self.rect.width
    		self.rect.y = self.rect.height
    		
    		self.x = float(self.rect.x)
    		self.y = float(self.rect.y)
    		
    		self.rain_speed = 1
    	
    	def declineee(self):
    		self.y += self.rain_speed
    		self.rect.y = self.y
    
    
    	

    全部代码如上

  • 我想用第一张图片的代码rf.update_rains(rains)让我的组里的全部图片下落。

  • 可是它报错了

  •  

cnds要我充100我舍不得。有人帮我解答了这个问题我必定微信转20。求求了

这个rains.draw(screen)是可以运行出我的图片的。说明组里面有我的类实例。为什么我调用不了实例里的方法

我的程序作用是让一排排雨滴下落

已解决

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^