Immagini a tessere
Fa parte della sezione Mondi del percorso Pygame di Coddy. Lezione 6 di 35.
I rettangoli marroni mostrano dove si trovano i muri. Le immagini fanno sembrare il livello un luogo. Carica ogni immagine della tessera una volta, dopo set_mode:
block_img = pygame.image.load("assets/images/block.png").convert_alpha()
coin_img = pygame.image.load("assets/images/coin.png").convert_alpha()Ogni tessera misura 36 per 36, la dimensione di una tessera della mappa, quindi si adatta alla griglia senza ridimensionamento. L'immagine della moneta ha un bordo vuoto, quindi disegnala nell'angolo della tessera e la moneta si troverà al centro.
Inserisci ciò che va disegnato in un'unica lista di coppie: quale immagine e dove. tiles.append((block_img, rect)) aggiunge una coppia; il ciclo di gioco le disegna tutte:
for image, rect in tiles:
screen.blit(image, rect)Il ciclo scompatta ogni coppia in image e rect.
Sfida
Facile- Dopo
set_mode, caricaassets/images/block.pnginblock_imgeassets/images/coin.pngincoin_img, ciascuna conconvert_alpha(). - Prima del ciclo di gioco, crea un elenco chiamato
tiles: per ogni#, la coppia(block_img, pygame.Rect(col * TILE, row * TILE, TILE, TILE)); per ogniC,(coin_img, ...)con lo stesso Rect. - Nel ciclo di gioco, esegui il blit di ogni coppia in
tilesinvece di disegnare i rettangoli marrone e giallo.
Provalo tu
import pygame
TILE = 36
WALL = (120, 90, 60)
COIN = (255, 196, 0)
LEVEL = [
"###.............",
"###.............",
"..........C.....",
".........####...",
"..C.............",
".####......C....",
"..........###...",
"#....C.........#",
"###..##...###.##",
"######..########",
]
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Tiles")
clock = pygame.time.Clock()
walls = []
coins = []
for row, line in enumerate(LEVEL):
for col, char in enumerate(line):
if char == "#":
walls.append(pygame.Rect(col * TILE, row * TILE, TILE, TILE))
elif char == "C":
coins.append(pygame.Rect(col * TILE + 10, row * TILE + 10, 16, 16))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((140, 200, 240))
for wall in walls:
pygame.draw.rect(screen, WALL, wall)
for coin in coins:
pygame.draw.rect(screen, COIN, coin)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Mondi
1Mappe dal testo
Un livello in testoRighe e colonneLettere con significatoDove inizia il giocatoreUna schermata alla volta4Collisioni con le piattaforme
Muri a sinistra e a destraAtterrare sulle piattaformeBattere la testaCadere fuori dal livelloUn asse alla volta5Una telecamera a scorrimento
Un offset della telecameraSegui il giocatoreMantieni la telecamera all'internoParallasseEsercitati da solo: Playground Pygame