Menu
CoddyTech

المعاملات

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

الدالة التي ترسم دائمًا عند (320, 240) قليلة الفائدة. تتيح المعاملات للمستدعي الاختيار. سمِّها داخل الأقواس في def واستخدمها في جسم الدالة مثل المتغيرات:

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)

يمرر كل استدعاء قيمًا، هي الوسائط، بالترتيب نفسه: يشغّل draw_star(120, 100) جسم الدالة بقيمة 120 لـ x و100 لـ y. ويشغّله draw_star(520, 90) مرة أخرى بقيم أخرى. تعريف واحد، وعدد النجوم الذي تستدعيه.

لا توجد المعاملات إلا داخل الدالة أثناء تشغيلها. أما خارجها، فلا تعني x وy شيئًا، أو تعنيان ما خزّنته هناك تحت هذين الاسمين.

challenge icon

التحدي

متوسط

دع المستدعي يحدد موضع النجمة:

  1. غيّر التعريف إلى def draw_star(x, y): وارسم حول (x, y): الخطوط من x - 10 إلى x + 10 ومن y - 10 إلى y + 10، والنقطة عند (x, y).
  2. استدعِ الدالة ثلاث مرات: عند (120, 100)، و(320, 180)، و(520, 90).

جرّب بنفسك

import pygame

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

# جهّز الأشياء هنا، قبل حلقة اللعبة.
def draw_star():
    pygame.draw.line(screen, (255, 240, 200), (310, 240), (330, 240), 2)
    pygame.draw.line(screen, (255, 240, 200), (320, 230), (320, 250), 2)
    pygame.draw.circle(screen, (255, 240, 200), (320, 240), 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()

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

pygame.quit()

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

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