我正在try 创建一个Sprite类,我可以将其大小、 colored颜色 、坐标和组分配给它.下面是它看起来的样子:
import pygame, sys
from pygame.locals import *
RED = (255,0,0)
class MapObject(pygame.sprite.Sprite):
def __init__(self, size, color, originxy, group):
super().__init__()
self.surf = pygame.Surface(size)
self.surf.fill(color)
self.rect = self.surf.get_rect(bottomleft = originxy)
group.add(self)
floors = pygame.sprite.Group()
# MapObject(size, color, originxy, group)
PT1 = MapObject((5760, 150), RED, (-2880, 1080), floors)
它工作得很好,但我只能将坐标分配给Sprite的左下角,所以我try 向它添加另一个参数,以允许Origxy是例如,它本身的中顶.
我想我可以简单地用一个新的MapObject()参数替换左下角,即Origin,它将根据该参数设置坐标.
import pygame, sys
from pygame.locals import *
RED = (255,0,0)
class MapObject(pygame.sprite.Sprite):
def __init__(self, size, color, origin, originxy, group):
super().__init__()
self.surf = pygame.Surface(size)
self.surf.fill(color)
self.rect = self.surf.get_rect(origin = originxy)
group.add(self)
floors = pygame.sprite.Group()
# MapObject(size, color, origin, originxy, group)
PT1 = MapObject((5760, 150), RED, midtop, (-2880, 1080), floors)
我原以为原点参数会取代通常的左下角参数,但我得到了一个错误:
Traceback (most recent call last):
File "problem test2.py", line 17, in \<module\>
PT1 = MapObject((5760, 150), RED, midtop, (-2880, 1080), floors)
NameError: name 'midtop' is not defined
我知道我必须将Floor定义为精灵组,但我不知道必须将Midtop定义为什么才能将其用作get_rect中的关键字参数.有人知道我是怎么做到的吗?