Menu
CoddyTech

استدعها مرات عديدة

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

استدعِ دالةً داخل حلقة، فترسم نمطًا. تحسب الحلقة الوسائط، وتتولى الدالة الرسم:

for i in range(8):
    draw_star(60 + i * 70, 60 + i * 45)

في كل تكرار، تكون النجمة على بُعد 70 بكسل إلى اليمين و45 بكسل إلى الأسفل من سابقتها، لذا تصطف النجوم من (60, 60) إلى (550, 375). غيّر 70 أو 45، وستتبع ذلك كل النجوم.

لهذا تستحق الدوال أن تكتبها. أسطر رسم النجمة موجودة مرة واحدة. لتغيير مظهر كل النجوم، كإطالة الأشعة أو استخدام لون آخر، غيّر متن الدالة، وسترسم كل عملية استدعاء النجمة الجديدة.

سمِّ الدالة بما تفعله، وغالبًا باستخدام فعل: draw_star، move_comet، reset_game. عندئذٍ، يُقرأ السطر الذي يستدعيها كأنه جملة.

challenge icon

التحدي

سهل

ارسم صفًا من النجوم: استبدل الاستدعاء الواحد بـ for i in range(8): مع استدعاء draw_star(60 + i * 70, 60 + i * 45). تمتد النجوم الثمانية من (60, 60) إلى (550, 375).

جرّب بنفسك

import pygame

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

# هيّئ الأشياء هنا، قبل حلقة اللعبة.
def draw_star(x, y):
    pygame.draw.line(screen, (255, 240, 200), (x - 10, y), (x + 10, y), 2)
    pygame.draw.line(screen, (255, 240, 200), (x, y - 10), (x, y + 10), 2)
    pygame.draw.circle(screen, (255, 240, 200), (x, y), 4)

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

    # غيّر الأشياء هنا، مرة واحدة في كل إطار.

    screen.fill((20, 24, 48))
    # ارسم هنا، بعد ملء الشاشة.
    draw_star(60, 60)

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

pygame.quit()
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

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

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