Pygame将表面转换为精灵

时间:2016-01-07 14:22:56

标签: python pygame sprite pygame-surface

我想用卡片制作游戏,比如Heartstone,但更简单(因为我不是专业程序员)。这只是程序的一部分

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))

现在的问题是它打印出的那种类型的图片是类' pygame.Surface'但我希望这张照片是精灵。 怎么做。 TNX。

1 个答案:

答案 0 :(得分:0)

Sprite是一个使用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 :仅为类名使用“CamelCase”名称 - 使代码更具可读性 - 甚至StackOveflor编辑器也会将PictureAdCard等作为类名称使用蓝色。对于函数和变量,请使用lower_case名称。

这似乎毫无用处

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

swordsman.Picture(swordsman_picture)

你可以在一行中做同样的事情 - 并使其更具可读性。

swordsman.Picture = swordsman_picture