Menu
CoddyTech

التدوير حول المركز

جزء من قسم الكائنات والصور في رحلة Pygame على Coddy. الدرس 6 من 36.

السفينة التي تدور تحتاج إلى صورة مُدارة. تعطيك pygame.transform.rotate(image, angle) سطحًا جديدًا: الصورة مدارة بمقدار angle درجة عكس اتجاه عقارب الساعة. تؤدي الزاوية السالبة إلى الدوران مع اتجاه عقارب الساعة. لا تتغير الصورة الأصلية.

لا يلائم المربع المُدار مربعًا بالحجم نفسه، لذا يكون السطح الجديد أكبر: فالسفينة المُدارة بزاوية 45 درجة يكون حجمها 90 × 90 بكسلًا. إذا رسمتها عند الزاوية العلوية اليسرى القديمة، فسيتحرك مركزها إلى الأسفل واليمين؛ فيجعل الدوران السفينة تتمايل حول النافذة.

أبقِ المركز في مكانه بدلًا من ذلك. اطلب من الصورة المُدارة مستطيلًا متمركزًا حول النقطة نفسها:

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

أدر الصورة الأصلية ship بمقدار angle كاملًا في كل إطار. اتجاه السفينة هو الرقم الموجود في angle، وتُنشأ الصورة منه.

challenge icon

التحدي

متوسط
  1. قبل الحلقة، اجعل angle = 0.
  2. يؤدي الضغط باستمرار على مفتاح اليسار إلى إضافة 3 إلى angle في كل إطار (عكس اتجاه عقارب الساعة)؛ بينما يؤدي الضغط باستمرار على مفتاح اليمين إلى طرح 3 منه.
  3. في كل إطار، أدر ship بمقدار angle وارسم النتيجة بحيث يكون مركزها عند (320, 240).

جرّب بنفسك

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

جميع دروس الكائنات والصور

تدرّب بنفسك: Playground لـ Pygame