问题
I am trying to create a "map of a city" using pygame. I want to be able to put images of buildings in specific grid coords rather than just filling them in with a color.
This is how I am creating this map grid:
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();
Now how do I put images of buildings in those brown colored grids at those specific locations? I've tried some of the samples online but can't seem to get them to work. Any help is appreciated.
If anyone have a good source for free sprites that I can use for pygame, please let me know. Thanks!
回答1:
Here's an example I wrote. It uses a numpy
to store tile data. The code plus image is downloadable at: http://code.google.com/p/ninmonkey/source/.../maptiles (If that fails, use this url: https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/ninmonkey/source-archive.zip )
- Press S to toggle mouse scrolling.
Map.tiles
is a 2dnumpy.array
that stores tile's id
If you want to add units/sprites that are on top of the tilemap: (Your buildings might count as this)
- store location using world coordinates
- draw them using a
world2screen
coordinate function.
The function will add the map offset to their world coordinates. So if the map offset is (-100,0) and your unit's world coordinate is (0,0), you render at (-100,0) placing them a the top left part of the map, as expected, even though you are scrolled.
来源:https://stackoverflow.com/questions/12663764/how-to-load-an-image-to-a-grid-using-pygame-instead-of-just-using-a-fill-color