gpt4 book ai didi

python - 有没有办法在不运行整个类的情况下将类作为参数传递给函数?

转载 作者:太空宇宙 更新时间:2023-11-04 04:16:10 25 4
gpt4 key购买 nike

我正在使用 Pygame 尝试将一个类作为参数传递给函数,这样我就可以调用该方法,而不是整个类。每次我传递 class 参数时,它似乎都在运行该类,并且由于它处于循环中,所以它很快就会被磨掉。任何人都可以帮忙吗?我的代码结构好吗?我正在尝试从一个组中删除雨滴,然后生成一个新行,但现在,只是想办法从组中删除雨滴。谢谢你!!!顺便说一句,对 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()

最终,我立即生成了大量雨滴,这减慢了速度。我希望它删除组中的雨滴,然后从那里生成一个新行。像下雨一样落在屏幕上。

最佳答案

您必须创建一个 Droplet 对象并将该对象传递给函数。

但是,我建议使用 pygame.sprite.Group .

Droplet 类中添加一个 .update 方法,该方法负责 y 轴运动并“杀死”掉落在地上的水滴。传递给 Group.update 方法的所有参数都委托(delegate)给包含元素的 .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 可以删除,因为 pygame.sprite.Group 提供了一个 .draw方法,它“blit”组的每个表面 - 为此,Sprite.rect.image 属性必须设置。

def update_screen(rainfall):
screen.fill((135, 206, 235))
print(len(rainfall))

rainfall.update();
rainfall.draw(screen)

pygame.display.flip()

while run:

update_screen(rainfall)

关于python - 有没有办法在不运行整个类的情况下将类作为参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com