como carregar uma imagem em uma grade usando pygame, em vez de apenas usar uma cor de preenchimento?
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!
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 2dnumpy.array
que armazena o ID do bloco
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.