استدعها مرات عديدة
جزء من قسم 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. عندئذٍ، يُقرأ السطر الذي يستدعيها كأنه جملة.
التحدي
سهلارسم صفًا من النجوم: استبدل الاستدعاء الواحد بـ 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()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Python في نافذة لعبة
تدرّب بنفسك: Playground لـ Pygame