como carregar uma imagem em uma grade usando pygame, em vez de apenas usar uma cor de preenchimento?

StackOverflow https://stackoverflow.com//questions/12663764

  •  11-12-2019
  •  | 
  •  

Pergunta

Estou tentando criar um "mapa de uma cidade" usando pygame.Quero poder colocar imagens de edifícios em coordenadas de grade específicas, em vez de apenas preenchê-las com uma cor.

É assim que estou criando esta grade de mapa:

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();

Agora, como coloco imagens de edifícios nessas grades marrons nesses locais específicos?Eu tentei alguns dos exemplos on-line, mas não consigo fazê-los funcionar.Qualquer ajuda é apreciada.

Se alguém tiver uma boa fonte de sprites gratuitos que eu possa usar no pygame, por favor me avise.Obrigado!

this is the grid map i created

Foi útil?

Solução

Aqui está um exemplo que escrevi.Ele usa um numpy para armazenar dados de bloco.O código mais a imagem pode ser baixado em: http://code.google.com/p/ninmonkey/source/.../maptiles (Se isso falhar, use este URL: https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/ninmonkey/source-archive.zip )

  • Imprensa S para alternar a rolagem do mouse.
  • Map.tiles é um 2d numpy.array que armazena o ID do bloco

tileset demo

Se você deseja adicionar unidades/sprites que estão no topo do mapa de blocos:(Seus edifícios podem contar assim)

  • localização da loja usando coordenadas mundiais
  • desenhe-os usando um world2screen função coordenada.

A função adicionará o deslocamento do mapa às suas coordenadas mundiais.Portanto, se o deslocamento do mapa for (-100,0) e a coordenada mundial da sua unidade for (0,0), você renderiza em (-100,0) colocando-os na parte superior esquerda do mapa, como esperado, mesmo que você são rolados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top