how to load an image to a grid using pygame, instead of just using a fill color?

核能气质少年 提交于 2019-11-27 04:49:48

问题


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 2d numpy.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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!