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)是可以运行出我的图片的。说明组里面有我的类实例。为什么我调用不了实例里的方法
我的程序作用是让一排排雨滴下落
已解决
不知道你这个问题是否已经解决, 如果还没有解决的话: