0

我想用卡片制作游戏,比如 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',但我希望这张图片是精灵。怎么做。肿瘤坏死因子。

4

1 回答 1

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

顺便说一句:仅将“CamelCase”名称用于类名称 - 以使代码更具可读性 - 甚至 StackOveflor 编辑器也将Picture,AdCard等作为类名称并使用蓝色。对于函数和变量,使用lower_case名称。


这似乎没用

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

swordsman.Picture(swordsman_picture)

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

swordsman.Picture = swordsman_picture
于 2016-01-07T14:38:42.647 回答