Menu
CoddyTech

Putar Mengelilingi Titik Tengah

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

Kapal yang berbelok membutuhkan gambar yang sudah diputar. pygame.transform.rotate(image, angle) memberimu Surface baru: gambar yang diputar berlawanan arah jarum jam sebesar angle derajat. Sudut negatif memutarnya searah jarum jam. Gambar aslinya tidak berubah.

Persegi yang diputar tidak muat dalam persegi dengan ukuran yang sama, jadi Surface baru berukuran lebih besar: kapal yang diputar 45 derajat berukuran 90 kali 90 piksel. Tempelkan gambar itu di sudut kiri atas yang lama, dan bagian tengahnya akan bergeser ke bawah dan ke kanan. Akibatnya, kapal tampak bergoyang di sekitar jendela saat diputar.

Alih-alih begitu, pertahankan posisi bagian tengahnya. Minta gambar yang diputar untuk membuat Rect dengan bagian tengah di titik yang sama:

rotated = pygame.transform.rotate(ship, angle)
rotated_rect = rotated.get_rect(center=(320, 240))
screen.blit(rotated, rotated_rect)

Putar ship asli sebesar seluruh nilai angle pada setiap frame. Arah kapal adalah angka dalam angle, dan gambarnya dibuat berdasarkan angka tersebut.

challenge icon

Tantangan

Sedang
  1. Sebelum perulangan, buat angle = 0.
  2. Menahan Left menambahkan 3 ke angle pada setiap frame (berlawanan arah jarum jam); menahan Right mengurangi 3.
  3. Pada setiap frame, putar ship sebesar angle dan gambar hasilnya dengan titik tengahnya di (320, 240).

Coba sendiri

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Turn the Ship")
clock = pygame.time.Clock()

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

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, ship_rect)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Semua pelajaran di Sprite dan Gambar

Latihan sendiri: Playground Pygame