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