Menu
CoddyTech

Buat Latar Berulang

Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 4 dari 36.

Warna polos membuat langit terlihat membosankan. assets/backgrounds/sky.png adalah gambar berukuran 72 kali 72 yang dibuat agar bisa diulang: letakkan salinannya berdampingan, dan tepinya menyatu tanpa celah. Menutupi jendela dengan salinan satu gambar kecil disebut penyusunan ubin.

Dua perulangan memberikan setiap sudut kiri atas, satu baris kisi setiap kali:

for x in range(0, 640, 72):
    for y in range(0, 480, 72):
        screen.blit(tile, (x, y))

range(0, 640, 72) menghasilkan 0, 72, 144, dan seterusnya hingga 576. Salinan pada 576 mencapai 648, melewati tepi: pygame menggambar bagian yang berada di dalam jendela dan melewati sisanya, sehingga kolom terakhir terpotong dengan rapi.

Ubin-ubin menutupi seluruh jendela, jadi ubin menggantikan screen.fill: gambar ubin terlebih dahulu, lalu gambar semua hal lainnya di atasnya. Gambar ini tidak memiliki piksel tembus pandang, jadi muat dengan .convert(), versi convert_alpha() untuk gambar solid.

challenge icon

Tantangan

Mudah
  1. Setelah set_mode, muat assets/backgrounds/sky.png dengan .convert() ke dalam variabel bernama tile.
  2. Ganti screen.fill(...) dengan dua perulangan yang menggambar tile pada setiap (x, y), dengan x dalam range(0, 640, 72) dan y dalam range(0, 480, 72).
  3. Tetap gambar kapal setelah ubin.

Coba sendiri

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Sky Tiles")
clock = pygame.time.Clock()

ship = pygame.image.load("assets/images/ship.png").convert_alpha()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((20, 22, 40))
    screen.blit(ship, (288, 360))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Semua pelajaran di Sprite dan Gambar

Latihan sendiri: Playground Pygame