Python Pygame:在没有团队的情况下展示精灵

Python Pygame:在没有团队的情况下展示精灵,python,python-3.x,pygame,sprite,Python,Python 3.x,Pygame,Sprite,我有两个精灵在一个类更容易控制(特别是:坦克炮塔和悬挂)。若我试着启动程序,它可以正常工作,并没有任何错误,但它并没有显示任何东西。我也试着在课堂上把两个精灵放在一个小组里,但它抛出了一个错误 TypeError: draw() missing 1 required positional argument: 'surface' 代码是: class Bokstelis(pygame.sprite.Sprite): def __init__(self,atvaizdas,centerx,

我有两个精灵在一个类更容易控制(特别是:坦克炮塔和悬挂)。若我试着启动程序,它可以正常工作,并没有任何错误,但它并没有显示任何东西。我也试着在课堂上把两个精灵放在一个小组里,但它抛出了一个错误

TypeError: draw() missing 1 required positional argument: 'surface'
代码是:

class Bokstelis(pygame.sprite.Sprite):
    def __init__(self,atvaizdas,centerx,centery,sukgreitis):
        pygame.sprite.Sprite.__init__(self)
        self.nuotr=pygame.image.load(atvaizdas)
        self.image=self.nuotr
        self.rect=self.image.get_rect()
        self.rect.centerx=centerx
        self.rect.centery=centery
        self.sukgreitis=sukgreitis
        self.kryptis=0
    def update(self):
        mouseX, mouseY=pygame.mouse.get_pos()
        self.angle = math.degrees(math.atan2(mouseY - self.rect.centery, mouseX - self.rect.centerx))
        orig_rect=self.rect
        if self.angle - self.kryptis <self.sukgreitis:
            self.image=pygame.transform.rotate(self.nuotr,-(self.sukgreitis+self.kryptis))
        elif self.angle - self.kryptis >self.sukgreitis:
            self.image=pygame.transform.rotate(self.nuotr,self.sukgreitis+self.kryptis)
        else:
            self.image=pygame.transform.rotate(self.nuotr,-angle)
        self.rect=self.image.get_rect()
        self.rect.center=orig_rect.center
        self.kryptis=self.angle
class Pagrindas(pygame.sprite.Sprite):
    def __init__(self,atvaizdas,centerx,centery,sukgreitis):
        pygame.sprite.Sprite.__init__(self)
        self.nuotr=pygame.image.load(atvaizdas)
        self.image=self.nuotr
        self.rect=self.image.get_rect()
        self.rect.centerx=centerx
        self.rect.centery=centery
        self.sukgreitis=-sukgreitis
        self.kryptis=0
    def suktis(self):
        orig_rect=self.rect
        self.image=pygame.transform.rotate(self.nuotr,-sukgreitis)
        self.rect=self.image.get_rect()
        self.rect.center=orig_rect.center
        self.kryptis-=kryptis
class Tankas:
    def __init__(self,centerx,centery,bokstelis,pagrindas,maxjudgreit,galingumas,svoris):
        self.bokstelis=bokstelis
        self.pagrindas=pagrindas
        self.centerx=centerx
        self.centery=centery
        self.bokstelis.rect.center=(self.centerx,self.centery)
        self.pagrindas.rect.center=(self.centerx,self.centery)
        self.grup=pygame.sprite.Group(self.bokstelis,self.pagrindas)
        self.maxjudgreit=maxjudgreit
        self.galing=galingumas
        self.svoris=svoris
        self.judejimas=0
        self.kryptis=self.pagrindas.kryptis
        self.greit=False
        self.maxdabgreit=72
    def update(self):
        self.centerx,selfcentery=self.judejimas * math.cos(math.radians(self.kryptis)), self.judejimas * math.sin(math.radians(self.kryptis))
        self.bokstelis.rect.center=(self.centerx,self.centery)
        self.pagrindas.rect.center=(self.centerx,self.centery)
        self.bokstelis.update()
        self.pagrindas.update()
        if self.maxdabgreit < self.judejimas:
            selfjudėjimas-=self.galing/self.svoris
        elif self.greit:
            self.judejimas=self.judejimasself.galing/self.svoris
全欧表面积:

Traceback (most recent call last):
  File "C:\Users\Kiela\Dropbox\IK8\IK3\World of Tankz.py", line 76, in <module>
    tankas.grup.draw()
TypeError: draw() missing 1 required positional argument: 'surface'
回溯(最近一次呼叫最后一次):
文件“C:\Users\Kiela\Dropbox\IK8\IK3\World of Tankz.py”,第76行,在
tankas.grup.draw()
TypeError:draw()缺少1个必需的位置参数:“surface”

在不禁用我的类的情况下,我应该如何显示我的坦克?

pygame.sprite.Group.draw()需要一个非可选参数“surface”。 如果您直接跳转到屏幕(
screen=pygame.display.set_mode()
),您可以:
self.grup.draw(screen)
您的另一种选择是制作一个曲面并在屏幕上显示:

screen = pygame.display.set_mode((0, 0)) # Create the main window
#Create the sprites and groups etc.
...

surface = pygame.Surface(screen.get_size)
self.grup.draw(surface)
screen.blit(surface)
pygame.display.flip()
但这是两者中比较复杂的一个。 如果您希望直接从文档中获取,可以在以下位置找到:

screen = pygame.display.set_mode((0, 0)) # Create the main window
#Create the sprites and groups etc.
...

surface = pygame.Surface(screen.get_size)
self.grup.draw(surface)
screen.blit(surface)
pygame.display.flip()