如何使用pygame将图像加载到网格,而不是仅使用填充颜色?

时间:2012-09-30 18:19:03

标签: python pygame loadimage

我正在尝试使用pygame创建一个“城市地图”。我希望能够将建筑物的图像放在特定的网格坐标中,而不是仅用颜色填充它们。

这是我创建此地图网格的方式:

def clear():
    for r in range(rows):
        for c in range(rows):
            if r%3 == 1 and c%3 == 1:
                color = brown;
                grid[r][c] = 1;
            else:
                color = white;
                grid[r][c] = 0; 
            pygame.draw.rect(screen, color, [(margin+width)*c+margin, (margin+height)*r+margin, width, height])         
    pygame.display.flip();

现在如何将建筑物的图像放在那些特定位置的棕色网格中?我已经尝试了一些在线样本但似乎无法让它们起作用。任何帮助表示赞赏。

如果有人有可用于pygame的免费精灵的好来源,请告诉我。谢谢!

this is the grid map i created

1 个答案:

答案 0 :(得分:4)

这是我写的一个例子。它使用numpy来存储切片数据。代码加图片可从以下网址下载:http://code.google.com/p/ninmonkey/source/.../maptiles(如果失败,请使用此网址:https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/ninmonkey/source-archive.zip

  • S 切换鼠标滚动。
  • Map.tiles是2d numpy.array,用于存储磁贴的ID

tileset demo

如果您想要添加位于贴图顶部的单位/精灵:(您的建筑物可能会被视为此)

  • 使用世界坐标存储位置
  • 使用world2screen坐标函数绘制它们。

该函数会将地图偏移量添加到其世界坐标。因此,如果地图偏移量为(-100,0)且单位的世界坐标为(0,0),则渲染为(-100,0),将它们放置在地图的左上角部分,如预期的那样,即使你滚动了。