العد باستخدام 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 إن اللعبة لم تصل أبدًا إلى إطارها الأول.
التحدي
متوسطفي جزء الرسم، استبدل الحلقة الواحدة بحلقة while:
- ابدأ بـ
radius = 200وrings = 0. - ما دام
radius > 10: ارسم حلقة ذات حدود باللون(150, 190, 255)، بعرض 2، ومركزها عند (320, 240)؛ اقسم نصف القطر إلى النصف باستخدام//؛ أضف 1 إلىrings. - بعد الحلقة، اعرض
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()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Python في نافذة لعبة
4حلقات ترسم
التكرار باستخدام Forالبداية والنهاية والخطوةاستخدام متغير الحلقةحلقة داخل حلقةالعد باستخدام Whileتدرّب بنفسك: Playground لـ Pygame