Menu
CoddyTech

ספרו את הכוכבים

חלק מהיחידה Python בחלון משחק במסלול ה-Pygame של Coddy. שיעור 31 מתוך 32.

השחקן צריך לדעת עד כמה השמיים מלאים. הציגו את המספר מתוך עשרים בפינה השמאלית העליונה:

text = font.render(f"Stars: {len(stars)}/20", True, (230, 230, 240))
screen.blit(text, (20, 20))

מחרוזת ה-f משלבת ערך, len(stars), עם טקסט רגיל, /20. כשיש שבעה כוכבים, מוצג Stars: 7/20.

צרו את הגופן בחלק ההגדרות, ליד stars = []. יצירת גופן טוענת אותו, וזה לוקח זמן, לכן עשו זאת פעם אחת. רינדור הטקסט זול ומתבצע בכל פריים, כך שהספירה תמיד מעודכנת.

ציירו את התווית אחרונה בחלק הציור, כדי שאף כוכב לא יוכל לכסות אותה.

challenge icon

אתגר

קל

הצגת הספירה:

  1. בחלק ההגדרה, יש ליצור את font = pygame.font.Font(None, 36).
  2. בסוף חלק הציור, יש לרנדר את f"Stars: {len(stars)}/20" בצבע (230, 230, 240) ולצייר אותו במיקום (20, 20).

נסו בעצמכם

import random
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:
        colour = (255, 255, 255)
        if random.randint(1, 30) == 1:
            colour = (110, 120, 170)
        pygame.draw.circle(screen, colour, star, 3)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

כל השיעורים ביחידה Python בחלון משחק

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