Menu
CoddyTech

Hadap ke Arah Terbangmu

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

Kapal menghadap ke atas dalam file-nya. Setelah diputar dengan rotate(ship, -90), kapal menghadap ke kanan, cocok untuk kapal yang terbang menyamping. Saat terbang ke kiri, kapal seharusnya menghadap ke kiri.

pygame.transform.flip(image, flip_x, flip_y) memberimu salinan yang dicerminkan. True, False mencerminkannya dari kiri ke kanan; False, True mencerminkannya dari atas ke bawah.

ship_right = pygame.transform.rotate(ship, -90)
ship_left = pygame.transform.flip(ship_right, True, False)

Kedua gambar dibuat sekali, sebelum perulangan. Game kemudian mengingat gambar mana yang harus ditampilkan dalam sebuah variabel, dan tombol mengubahnya:

if keys[pygame.K_LEFT]:
    ship_rect.x -= 5
    image = ship_left

Gambar image setiap frame. Saat tidak ada tombol yang ditekan, image mempertahankan nilai terakhirnya, sehingga kapal terus menghadap ke arah terakhir kali terbang.

challenge icon

Tantangan

Sedang
  1. Sebelum perulangan, buat ship_left: ship_right yang dibalik dari kiri ke kanan.
  2. Buat image = ship_right sebelum perulangan.
  3. Menahan tombol Kiri mengatur image = ship_left; menahan tombol Kanan mengatur image = ship_right. Gerakannya tetap seperti semula.
  4. Gambar image pada ship_rect.

Coba sendiri

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Face the Way You Fly")
clock = pygame.time.Clock()

ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_right = pygame.transform.rotate(ship, -90)
ship_rect = ship_right.get_rect(center=(320, 240))

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

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        ship_rect.x -= 5
    if keys[pygame.K_RIGHT]:
        ship_rect.x += 5
    ship_rect.clamp_ip(screen.get_rect())

    screen.fill((20, 22, 40))
    screen.blit(ship_right, ship_rect)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Sprite dan Gambar

Latihan sendiri: Playground Pygame