我在询问是否有可能在Pygame中绘制精灵列表,如果是这样的话?
我试图从二维列表中绘制,这将绘制地图
导入pygame
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
screen_width = 700
screen_height = 400
screen = pygame.display.set_mode([screen_width, screen_height])
pygame.init()
image = pygame.image.load("Textures(Final)\Grass_Tile.bmp").convert()
imagerect = image.get_rect()
tilemap = [
[image, image, image],
[image, image, image]
]
done = False
clock = pygame.time.Clock()
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
screen.fill(BLACK)
screen.blit(tilemap, imagerect)
clock.tick(20)
pygame.display.flip()
pygame.quit()
我知道我可以做一些更简单的事情,比如绘制每张图片。但是,我想知道我是否可以这样做,所以将来当我有更多的精灵时,我可以添加到列表中,并创建地图。
谢谢!
答案 0 :(得分:0)
我不相信这很可能正如你所描述的那样,但如果这些图像不经常改变,我会建议将所有地图图像预先打到一个pygame Surface,后来可以使用,使用类似:
map_surface = pygame.Surface(( len(tilemap[0])*TILE_WIDTH, len(tilemap)*TILE_HEIGHT ))
for y,row in enumerate(tilemap):
for x,tile_surface in enumerate(row):
map_surface.blit(tile_surface,(x*TILE_WIDTH,y*TILE_HEIGHT))
然后你可以简单地使用:
screen.blit(map_surface)
有一点需要注意的是,即使您的地图确实发生了变化,您也只需将更改后的切片blit到map_surface
曲面上,而不必重新创建整个地图。