我正在使用Pygame尝试将类作为函数的参数传递,以便可以调用方法,而不是整个类。每次我传递类参数时,它似乎都在运行该类,并且由于它处于循环状态,因此可以很快地将其磨碎。有人可以帮忙吗?我的代码结构还可以吗?我正在尝试从一个组中删除雨滴,然后生成一个新行,但是现在,我只是想办法从该组中删除雨滴。谢谢!!!顺便说一句,这是Python的新手,并且一般来说都是编码(不包括HTML5和CSS3)。
我尝试将类设置为变量(drop = Droplet()),然后尝试运行要删除的函数。我还尝试将类中的函数设置为方法,但也失败了。我非常感谢您的帮助。谢谢!我已经对Stack Overflow和Google进行了详尽的研究。我已经尝试过.kill和.remove。
class Droplet(Sprite):
def __init__(self):
super(Droplet, self).__init__(rainfall)
self.screen = screen
self.screen_rect = screen.get_rect
self.image = pygame.image.load('images/Glossy_Raindrop.bmp')
self.rect = self.image.get_rect()
self.rect.x = self.rect.width
self.rect.y = self.rect.height
def blitme(self):
self.screen.blitme(self.image, self.rect)
def dropground(Droplet):
drop = Droplet()
screenie = screen.get_rect()
if not screen.get_rect().contains(drop.rect):
print("delete")
drop.kill()
def update_screen(rainfall):
screen.fill((135, 206, 235))
print(len(rainfall))
rain_y_move(Droplet, rainfall)
dropground(Droplet)
rainfall.draw(screen)
pygame.display.flip()
最终,我一下子就产生了很多雨滴,这使雨滴变慢了。我希望删除组中的雨滴,然后从那里开始并生成新行。就像在屏幕上下雨一样。
答案 0 :(得分:1)
您必须创建一个Droplet
对象并将该对象传递给函数。
但是,我建议使用pygame.sprite.Group
。
在.update
类中添加一个Droplet
方法,该方法具有y移动功能,如果掉落在地面上则“杀死”掉落物。传递给.update
的{{1}}方法的所有参数都委托给所包含元素的Group
方法:
.updtate
创建组并添加下拉列表:
例如
class Droplet(Sprite):
# [...]
def update(self)
self.rect = self.rect.move(0, speed)
screenie = screen.get_rect()
if not screen.get_rect().contains(self.rect):
print("delete")
self.kill()
rainfall = pygame.sprite.Group()
my_drop = Droplet()
rainfall.add(my_drop)
可以删除,因为Droplet.blitme
提供了一种.draw
方法,该方法可以“遮盖”组的每个表面-为此,pygame.sprite.Group
和{{1} Sprite
的}属性必须设置。
.rect