Menu
CoddyTech

נצנוץ

חלק מהיחידה 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 בראש התוכנית. כאן ההגרלה האקראית צריכה להתבצע בלולאת הציור, כי יש לבחור מחדש בכל פריים, עבור כל כוכב.

challenge icon

אתגר

בינוני

גרמו לכוכבים לנצנץ:

  1. הוסיפו import random בחלק העליון.
  2. בלולאת הכוכבים, התחילו את colour של כל כוכב בצבע לבן (255, 255, 255).
  3. כאשר random.randint(1, 30) == 1, הפכו אותו לעמום (110, 120, 170).
  4. ציירו את הכוכב באמצעות 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 בחלון משחק

תרגלו בעצמכם: Pygame אונליין