微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从pygame中的图像绘制精灵,内部错误

如何解决从pygame中的图像绘制精灵,内部错误

我正在尝试从 png 中绘制精灵,该 png 位于 doomman 文件夹中。我得到的错误是:

TypeError: add_internal() missing 1 required positional argument: 'group'

我是在 pygame 中绘制精灵的新手。这是怎么回事?

这是代码

import pygame
pygame.init()

screen = pygame.display.set_mode((640,480))

BLACK = (0,0)
WHITE = (255,255,255)
RED = (255,0)

class Sprite(pygame.sprite.Sprite):
    def __init__(self,pos):
        # Don't forget to call the __init__ method of the parent class.
        super(Sprite,self).__init__()
        
        self.image = pygame.image.load(demon)
        

all_sprites_list = pygame.sprite.Group()
all_sprites_list.add(Sprite)

demon = pygame.image.load("C:/programming/doomman/cacodemon.png").convert_alpha()

clock = pygame.time.Clock()
pygame.display.set_caption("Demon Dance")
carryOn = True
        
while carryOn == True:
    
    for event in pygame.event.get():
            if event.type==pygame.QUIT:
                carryOn=False
                
    all_sprites_list.update()
    
    pygame.display.flip()
    clock.tick(60)
    all_sprites_list.draw(screen)
 

解决方法

pygame.sprite.Group 管理 Sptrite 对象。您需要从 Sprite 类创建一个 Instance Objects 对象。此外,pygame.sprite.Sprite 对象需要具有 rect 属性。在 Group 中绘制 _Sprites 时从 pygame.sprite.Group.draw 请求此属性:

import pygame
pygame.init()

screen = pygame.display.set_mode((640,480))

BLACK = (0,0)
WHITE = (255,255,255)
RED = (255,0)

class Sprite(pygame.sprite.Sprite):
    def __init__(self,pos):
        super(Sprite,self).__init__()
        self.image = demon
        self.rect = self.image.get_rect(center = pos)
        
all_sprites_list = pygame.sprite.Group()

demon = pygame.image.load("C:/programming/doomman/cacodemon.png").convert_alpha()
my_sprite = Sprite((50,50))
all_sprites_list.add(my_sprite)

clock = pygame.time.Clock()
pygame.display.set_caption("Demon Dance")
carryOn = True
        
while carryOn == True:
    
    for event in pygame.event.get():
            if event.type==pygame.QUIT:
                carryOn=False
                
    all_sprites_list.update()
    
    pygame.display.flip()
    clock.tick(60)
    all_sprites_list.draw(screen)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。