我正在尝试使用 pygame 创建“城市 map ”。我希望能够将建筑物的图像放在特定的网格坐标中,而不是仅仅用颜色填充它们。
这就是我创建 map 网格的方式:
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 的免费 Sprite 的良好来源,请告诉我。谢谢!
最佳答案
这是我写的一个例子。它使用 numpy
来存储图 block 数据。代码加图像可在以下位置下载: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
是一个 2dnumpy.array
存储 tile 的 id
如果你想在 map 上添加单位/ Sprite :(你的建筑物可能算作这个)
- 使用世界坐标存储位置
- 使用
world2screen
坐标函数绘制它们。
该函数会将 map 偏移量添加到他们的世界坐标中。因此,如果 map 偏移量为 (-100,0) 并且您的单位的世界坐标为 (0,0),则您在 (-100,0) 处渲染,将它们放置在 map 的左上角,正如预期的那样,即使您滚动。
关于python - 如何使用pygame将图像加载到网格,而不是仅仅使用填充颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12663764/