تلألأ
جزء من قسم Python في نافذة لعبة في رحلة Pygame على Coddy. الدرس 30 من 32.
تتلألأ النجوم الحقيقية. هنا، يخفت ضوء كل نجم لمدّة إطار واحد بين الحين والآخر، بمحض الصدفة. في كل إطار، يختار كل نجم رقمًا من 1 إلى 30، وإذا كان الرقم 1، يُرسم خافتًا:
for star in stars:
colour = (255, 255, 255)
if random.randint(1, 30) == 1:
colour = (110, 120, 170)
pygame.draw.circle(screen, colour, star, 3)تبدأ colour باللون الأبيض لكل نجم، ولا تغيّرها if إلا إذا كان الرقم 1. يحدث ذلك في إطار واحد من كل 30 إطارًا، أي نحو مرتين في الثانية لكل نجم، ويختار كل نجم رقمه بنفسه، لذا تتلألأ النجوم في لحظات مختلفة. هذا التغيّر الطفيف وغير المنتظم هو ما يجعل السماء تبدو نابضة بالحياة.
أضف import random في أعلى البرنامج. من المناسب إجراء اختيار عشوائي داخل حلقة الرسم هنا، لأن الاختيار يجب أن يُجرى من جديد في كل إطار ولكل نجم.
التحدي
متوسطاجعل النجوم تتلألأ:
- أضف
import randomفي الأعلى. - في حلقة النجوم، ابدأ بتعيين اللون
colourلكل نجم إلى الأبيض(255, 255, 255). - عندما يكون
random.randint(1, 30) == 1، اجعله خافتًا(110, 120, 170). - ارسم النجمة باستخدام
colour.
جرّب بنفسك
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# هيّئ الأشياء هنا، قبل حلقة اللعبة.
stars = []
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
stars.append(event.pos)
# غيّر الأشياء هنا، مرة واحدة لكل إطار.
screen.fill((20, 24, 48))
# ارسم هنا، بعد ملء الشاشة.
pygame.draw.circle(screen, (240, 230, 160), (560, 80), 40)
pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))
for star in stars:
pygame.draw.circle(screen, (255, 255, 255), star, 3)
pygame.display.flip()
clock.tick(60)
pygame.quit()
جميع دروس Python في نافذة لعبة
تدرّب بنفسك: Playground لـ Pygame