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 编辑器也会踩 Picture
, AdCard
等作为 class 命名并使用蓝色。对于函数和变量,使用 lower_case
名称。
这似乎没用
def Picture(self, Picture):
self.Picture = Picture
swordsman.Picture(swordsman_picture)
您可以在一行中执行相同的操作 - 并使其更具可读性。
swordsman.Picture = swordsman_picture
我想用纸牌制作一个游戏,类似于炉石传说,但更简单(因为我不是专业程序员)。这只是计划的一部分
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 编辑器也会踩 Picture
, AdCard
等作为 class 命名并使用蓝色。对于函数和变量,使用 lower_case
名称。
这似乎没用
def Picture(self, Picture):
self.Picture = Picture
swordsman.Picture(swordsman_picture)
您可以在一行中执行相同的操作 - 并使其更具可读性。
swordsman.Picture = swordsman_picture