Menu
CoddyTech

حرّك في كل إطار

جزء من قسم Python في نافذة لعبة في رحلة Pygame على Coddy. الدرس 7 من 32.

تُنفَّذ حلقة اللعبة 60 مرة في الثانية، لذا يُنفَّذ السطر في جزء «غيّر الأشياء هنا» مرة واحدة في كل إطار. استخدمه لتغيير متغير بمقدار بسيط في كل مرة:

comet_x = comet_x + 2

اقرأه من اليمين: خذ القيمة في comet_x، وأضف إليها 2، ثم خزّن النتيجة مجددًا في comet_x. إذا كانت قيمته 40، فستصبح الآن 42. وفي الإطار التالي تصبح 44، ثم 46.

يُرسَم المذنب عند comet_x في كل إطار، لذا يُظهره كل إطار على بُعد 2 بكسل إضافيين إلى اليمين: 120 بكسلًا في الثانية. هكذا تتحرك الأشياء كلها في اللعبة: رقم يتغير بمقدار بسيط في كل إطار.

يوجد comet_x = 40 في جزء الإعداد، حيث يُنفَّذ مرة واحدة. أما داخل الحلقة، فسيُعيد المذنب إلى 40 في كل إطار، وسيظل المذنب ثابتًا.

لدى Python صيغة مختصرة: comet_x += 2 تؤدي الوظيفة نفسها.

challenge icon

التحدي

سهل

اجعل المذنب يطير: في الجزء # Change things here, once a frame.، أضف 2 إلى comet_x في كل إطار، لكي يتحرك بمقدار 2 بكسل إلى اليمين في كل إطار.

جرّب بنفسك

import pygame

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

# هيّئ العناصر هنا، قبل حلقة اللعبة.
moon_x = 160
moon_y = 120
comet_x = 40
comet_y = 200

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

    # غيّر العناصر هنا، مرةً لكل إطار.

    screen.fill((20, 24, 48))
    # ارسم هنا، بعد ملء الشاشة.
    pygame.draw.circle(screen, (240, 230, 160), (moon_x, moon_y), 50)
    pygame.draw.circle(screen, (120, 200, 255), (comet_x, comet_y), 8)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

جميع دروس Python في نافذة لعبة

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