צבור ניקוד
חלק מהיחידה לולאת המשחק במסלול ה-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).
מרנדרים את הטקסט בתוך הלולאה, אחרי המילוי. הניקוד משתנה, ותמונה שנוצרה פעם אחת ממשיכה להציג את המספר הישן.
אתגר
קל- לפני הלולאה, צור
font = pygame.font.Font(None, 32)ואתscore = 0. - הוסף 1 ל־
scoreכשהסל תופס בלוק. - אחרי ציור הבלוק, הצג את
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()
כל השיעורים ביחידה לולאת המשחק
5תפוס את הבלוקים
הסלבלוק נופלתרגלו בעצמכם: Pygame אונליין