试图复制太空入侵者。我正在跟踪这里的导游,https://kidscancode.org/blog/2016/08/pygame_shmup_part_5/。这是玩家精灵
class Player(pygame.sprite.Sprite):
def __init__(self):
super(Player, self).__init__()
self.image = pygame.image.load('./Assets/PNG/playerShip1_orange.png').convert()
self.image.set_colorkey(BLACK)
self.image = pygame.transform.scale(self.image, (50, 40))
# WIN_SIZE = 500, 500
self.rect = self.image.get_rect()
self.rect.centerx = WIN_SIZE[0] / 2
self.rect.bottom = WIN_SIZE[1] - 10
self.speedx = 0
# NOT WORKING FOR SOME REASON
# self.image.fill(WHITE, self.rect)
# pygame.draw.rect(self.image, WHITE, self.rect, 1)
# pygame.draw.circle(self.image, WHITE, self.rect.center, 25, 1)
pygame.draw.rect(self.image, WHITE, ( (0,0), (50, 40) ), 1)我想要在sprite周围创建一个矩形轮廓,如果我使用上面代码中的最后一行,我就可以这样做。但是,即使每个参数都是正确的,并且没有引发编译/运行时错误,注释代码也不起作用。
来自主类的关系事件片段
class Game:
def __init__(self):
pygame.init()
self._win = pygame.display.set_mode(WIN_SIZE, 0, 32)
self._clock = pygame.time.Clock()
self._all_sprites = pygame.sprite.Group()
self._player = Player()
self._all_sprites.add(self._player)
self._game_over = False
def run(self):
while not self._game_over:
self._clock.tick(FPS)
self._all_sprites.update()
self._all_sprites.draw(self._win)
pygame.display.flip()
def main():
game = Game()
game.run()
if __name__ == "__main__":
main()完整资料来源:
如能提供任何帮助,将不胜感激:)
发布于 2020-09-10 06:55:21
在设置矩形的位置之前,必须在图像上绘制轮廓:
self.rect = self.image.get_rect()
pygame.draw.rect(self.image, WHITE, self.rect, 1)
pygame.draw.circle(self.image, WHITE, self.rect.center, 25, 1)
self.rect.centerx = WIN_SIZE[0] // 2
self.rect.bottom = WIN_SIZE[1] - 10
self.speedx = 0get_rect()返回的矩形的位置为(0,0)。这也是图像中轮廓的左上角位置。注意,您在图像上绘制轮廓,而不是在显示上。
https://stackoverflow.com/questions/63824122
复制相似问题