שמירה על הניקוד
שיעור 13 מתוך 41 בקורס צרו משחקים עם 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).
לחצו על "שחק" ותפסו בלוק: יוצג Score: 1. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
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 אונליין