الالتفاف عند الحافة
جزء من قسم Python في نافذة لعبة في رحلة Pygame على Coddy. الدرس 10 من 32.
لا تنفّذ if أسطرها إلا عندما يكون الشرط صحيحًا:
if comet_x > 640:
comet_x = 0ينتهي الشرط بنقطتين. الأسطر الموجودة تحته مزاحة بمقدار 4 مسافات: فهي تتبع if. تختبر Python الشرط في كل إطار. ما دام المذنب داخل النافذة، يكون الشرط خطأً ولا يحدث شيء. عندما يتجاوز المذنب الحافة اليمنى، يصبح الشرط صحيحًا ويعود المذنب إلى اليسار.
تكون نتيجة المقارنة إما True أو False. تعني > أكبر من، وتعني < أصغر من، وتسأل == عمّا إذا كانت قيمتان متساويتين. تُسنِد علامة = واحدة قيمة؛ أما العلامتان فتجريان مقارنة.
اختبر نطاقًا مثل > 640، لا قيمةً دقيقة واحدة. يبدأ المذنب عند 50 ويتحرك 3 بكسلات في الإطار: 635، 638، 641. لا يصل أبدًا إلى 640، لذا لن يكون comet_x == 640 صحيحًا أبدًا.
التحدي
سهلبعد السطر الذي يحرّك المذنب، أضف if: عندما تكون comet_x أكبر من 640، عيّن comet_x إلى 0. عندها يطير المذنب عبر النافذة مرارًا وتكرارًا.
جرّب بنفسك
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# هيّئ العناصر هنا، قبل حلقة اللعبة.
moon_x = 160
moon_y = 120
comet_x = 50
comet_y = 200
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# غيّر العناصر هنا، مرةً واحدةً في كل إطار.
comet_x = comet_x + 3
screen.fill((20, 24, 48))
# ارسم هنا، بعد ملء الشاشة.
pygame.draw.circle(screen, (240, 230, 160), (moon_x, moon_y), 50)
pygame.draw.circle(screen, (120, 200, 255), (comet_x, comet_y), 8)
pygame.display.flip()
clock.tick(60)
pygame.quit()
جميع دروس Python في نافذة لعبة
تدرّب بنفسك: Playground لـ Pygame