2 回答
TA贡献1796条经验 获得超4个赞
为了找到这个问题的根源,我们需要获得更多信息。无法“让第二个班级出现”可能是一百万种不同的事情。为了把它变成一个我可以帮助你的问题,你可以做一些测试。
我建议的第一个是为您的课程制作多个实例。例如:
playerChar1 = Char(BLUE, [0, 0], 30, 0)
playerChar2 = Char(BLUE, [0, 30], 30, 0)
playerChar3 = Char(BLUE, [30, 0], 30, 0)
这会在不同的地方产生 3 个字符吗?如果不是,也许您正在绘制除最新角色之外的所有内容?
如果您可以创建 Char 类的多个实例,接下来我们需要第二个类。我们将从您的 char 类开始,然后将其重命名Char2:
class Char2(pygame.sprite.Sprite):
def __init__(self, color, pos, radius, width):
super().__init__()
self.image = pygame.Surface([radius*2, radius*2])
self.image.fill(WHITE)
self.image.set_colorkey(WHITE)
pygame.draw.circle(self.image, color, [radius, radius], radius, width)
self.rect = self.image.get_rect()
def moveRight(self, pixels):
self.rect.x += pixels
pass
def moveLeft(self, pixels):
self.rect.x -= pixels
pass
def moveUp(self, pixels):
self.rect.y -= pixels
pass
def moveDown(self, pixels):
self.rect.y += pixels
pass
里面到处都是一样的东西。就像以前一样,你能创建这个类的实例吗?他们会出现在屏幕上吗?
最后,如果第二个类出现,您需要做的就是调整第二个类中的逻辑,直到它像您想要的僵尸一样运行。
TA贡献1834条经验 获得超8个赞
我自己在稍微摆弄了一下之后让它工作了我使用了上面答案中提供的代码:
playerChar1 = Char(BLUE, [0, 0], 30, 0)
playerChar2 = Char(BLUE, [0, 30], 30, 0)
playerChar3 = Char(BLUE, [30, 0], 30, 0)
我只是忘了在我的程序的主循环中添加这个:
screen.blit(playerChar1.image,playerChar1.rect)
screen.blit(playerChar2.image,playerChar2.rect)
screen.blit(playerChar3.image,playerChar3.rect)
这让它工作!以下部分是我在本网站的另一个问题中找到的。
添加回答
举报