Ghi điểm
Thuộc phần Vòng lặp trò chơi trong hành trình Pygame của Coddy. Bài học 30 trên 35.
Văn bản trong pygame là hình ảnh của các từ. pygame.font.Font chuyển một chuỗi thành một bề mặt, rồi bạn vẽ bề mặt đó bằng 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) là phông chữ tích hợp sẵn của pygame, cao 32 pixel. Tạo phông chữ một lần, trước vòng lặp. render(text, True, color) vẽ các từ; True làm mượt các cạnh của chúng. blit(surface, (x, y)) sao chép hình ảnh lên màn hình, với góc trên bên trái nằm ở (x, y).
Hiển thị văn bản bên trong vòng lặp, sau khi tô màu nền. Điểm số thay đổi, còn hình ảnh được tạo một lần sẽ tiếp tục hiển thị số cũ.
Thử thách
DễĐếm số khối bắt được trên màn hình.
- Trước vòng lặp, tạo
font = pygame.font.Font(None, 32)vàscore = 0. - Cộng 1 vào
scorekhi giỏ bắt được một khối. - Sau khi vẽ khối, hiển thị
f"Score: {score}"bằng màu(240, 240, 240)và blit nó tại(10, 10).
Nhấn Chơi và bắt một khối: màn hình sẽ hiển thị Score: 1. Sau đó, nhấn Kiểm tra.
Tự làm thử
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()
Tất cả bài học trong Vòng lặp trò chơi
1Di chuyển hình vuông
Mở cửa sổTô nền4Di chuyển theo thời gian
Thời gian deltaPixel mỗi giâyVector2Gia tốc và ma sátDi chuyển vòng quanh màn hìnhTự luyện tập: Playground Pygame