Menu
CoddyTech

צבור ניקוד

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

טקסט ב־pygame הוא תמונה של המילים. pygame.font.Font הופך מחרוזת למשטח, ואת המשטח מציירים באמצעות screen.blit.

font = pygame.font.Font(None, 32)

text = font.render(f"Score: {score}", True, (240, 240, 240))
screen.blit(text, (10, 10))

Font(None, 32) הוא הגופן המובנה של pygame, שגובהו 32 פיקסלים. יוצרים אותו פעם אחת, לפני הלולאה. render(text, True, color) מצייר את המילים; True מחליק את הקצוות שלהן. blit(surface, (x, y)) מעתיק את התמונה אל המסך, כשהפינה השמאלית העליונה שלה נמצאת ב־(x, y).

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

challenge icon

אתגר

קל
  1. לפני הלולאה, צור font = pygame.font.Font(None, 32) ואת score = 0.
  2. הוסף 1 ל־score כשהסל תופס בלוק.
  3. אחרי ציור הבלוק, הצג את f"Score: {score}" בצבע (240, 240, 240) והצג אותו במיקום (10, 10).

נסו בעצמכם

import random
import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()

basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        basket.x -= 8
    if keys[pygame.K_RIGHT]:
        basket.x += 8
    basket.clamp_ip(screen.get_rect())

    block.y += 3
    if block.top > 360:
        block.y = -20
        block.x = random.randint(0, 460)
    if block.colliderect(basket):
        block.y = -20
        block.x = random.randint(0, 460)

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), basket)
    pygame.draw.rect(screen, (235, 80, 80), block)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

כל השיעורים ביחידה לולאת המשחק

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