Menu
CoddyTech

العد باستخدام While

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

تتكرر حلقة while ما دام شرطها صحيحًا. استخدمها عندما لا تعرف مسبقًا عدد المرات التي ستتكرر فيها:

radius = 200
rings = 0
while radius > 10:
    pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
    radius = radius // 2
    rings = rings + 1

ينخفض نصف القطر إلى النصف في كل مرة: 200، 100، 50، 25، 12. تقسم // العدد وتحذف ما يأتي بعد الفاصلة، لذا فإن 25 // 2 تساوي 12. ثم تصبح القيمة 6، فيكون الشرط غير صحيح، وتنتهي الحلقة بعد 5 حلقات. يحصيها rings. يرسم الرقم الخامس في استدعاء الدائرة، وهو 2، إطارًا بعرض 2 بكسل بدلًا من دائرة ممتلئة.

حلقة اللعبة هي أيضًا حلقة while، وتستمر حتى تغلق النافذة. يجب أن تنتهي حلقة while الموجودة داخل إطار بسرعة، وإلا فلن ينتهي الإطار أبدًا. إذا حذفت السطر الذي يقسم نصف القطر إلى النصف، فسيظل الشرط صحيحًا إلى الأبد: تتجمد اللعبة، وتقول Check إن اللعبة لم تصل أبدًا إلى إطارها الأول.

challenge icon

التحدي

متوسط

في جزء الرسم، استبدل الحلقة الواحدة بحلقة while:

  1. ابدأ بـ radius = 200 وrings = 0.
  2. ما دام radius > 10: ارسم حلقة ذات حدود باللون (150, 190, 255)، بعرض 2، ومركزها عند (320, 240)؛ اقسم نصف القطر إلى النصف باستخدام //؛ أضف 1 إلى rings.
  3. بعد الحلقة، اعرض f"Rings: {rings}" عند (20, 20). سيظهر النص Rings: 5.

جرّب بنفسك

import pygame

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

# هيّئ الأشياء هنا قبل حلقة اللعبة.
font = pygame.font.Font(None, 36)

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, (150, 190, 255), (320, 240), 200, 2)
    text = font.render("Rings: 1", True, (230, 230, 240))
    screen.blit(text, (20, 20))

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

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

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

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

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