שמירה על ניקוד
שיעור 13 מתוך 40 בקורס יוצרים משחקים עם Pygame של Coddy.
טקסט ב־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()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יוצרים משחקים עם Pygame
2אירועים והתנגשויות
הסלבלוק נופלתרגלו בעצמכם: Pygame אונליין