Menu
CoddyTech

Merkez Etrafında Döndür

Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 6 / 36.

Dönen bir gemi için döndürülmüş bir görsel gerekir. pygame.transform.rotate(image, angle) size yeni bir Surface verir: görselin angle derece saat yönünün tersine döndürülmüş hâli. Negatif bir açı, görseli saat yönünde döndürür. Orijinal görsel değişmez.

Döndürülmüş bir kare, aynı boyuttaki bir kareye sığmaz; bu nedenle yeni Surface daha büyüktür: 45 derece döndürülmüş gemi 90'a 90 pikseldir. Görseli eski sol üst köşesine blit ederseniz ortası aşağı ve sağa kayar; döndürme, geminin pencerenin içinde yalpalamasına neden olur.

Bunun yerine ortasını olduğu yerde tutun. Döndürülmüş görselden aynı noktada ortalanmış bir Rect isteyin:

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

Her karede orijinal ship görselini angle değerinin tamamı kadar döndürün. Geminin yönü angle içindeki sayıdır ve görsel bu sayıdan oluşturulur.

challenge icon

Görev

Orta
  1. Döngüden önce angle = 0 yap.
  2. Sol tuşunu basılı tutmak, her karede angle değerini 3 artırır (saat yönünün tersine); Sağ tuşunu basılı tutmak ise 3 azaltır.
  3. Her karede ship nesnesini angle kadar döndür ve sonucu merkezi (320, 240) olacak şekilde çiz.

Kendin dene

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()

Sprite'lar ve Görseller bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground