Pygame 将表面转换为精灵

Pygame convert surface into sprite

我想用纸牌制作一个游戏,类似于炉石传说,但更简单(因为我不是专业程序员)。这只是计划的一部分

import pygame 
class Card:
def AdCard(self, AdCard):
    self.AdCard = AdCard
def HpCard(self, HpCard):
    self.HpCard = HpCard
def Picture(self, Picture):
    self.Picture = Picture
def Special(self, Special):
    if Special == "Heal":
        pass

pygame.init()
display = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)


swordsman = Card()
swordsman_picture = pygame.image.load("Swordsman.png").convert()
swordsman.Picture(swordsman_picture)
print(type(swordsman.Picture))

现在的问题是它打印的图片类型是 class 'pygame.Surface' 但我希望这张图片是 sprite。 怎么做。 Tnx.

Sprite 是一个 class,它使用 Surface 来保持图像,使用 Rect 来保持位置和大小。

class Card(pygame.sprite.Sprite):

    def __init__(self, surface):
        pygame.sprite.Sprite.__init__(self)

        self.image = surface

        self.rect = self.image.get_rect() # size and position

# and then

one_card = Card(swordsman_picture)

(参见 Pygame 文档:pygame.sprite.Sprite

或者可能,但我之前没有看到这个

one_card = pygame.sprite.Sprite()
one_card.image = swordsman_picture
one_card.rect = one_card.image.get_rect() # size and position

BTW:仅对 classes 名称使用 "CamelCase" 名称 - 使代码更具可读性 - 甚至 StackOveflor 编辑器也会踩 PictureAdCard 等作为 class 命名并使用蓝色。对于函数和变量,使用 lower_case 名称。


这似乎没用

def Picture(self, Picture):
    self.Picture = Picture

swordsman.Picture(swordsman_picture)

您可以在一行中执行相同的操作 - 并使其更具可读性。

swordsman.Picture = swordsman_picture