Ghi điểm
Bài học 13 trên 41 trong khóa học Tạo trò chơi với Pygame của Coddy.
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 surface, rồi bạn vẽ surface đó 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ịn 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 tại (x, y).
Hãy dựng 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ị con số cũ.
Thử thách
DễĐếm số lần bắt được khối 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(240, 240, 240)rồi blit tại(10, 10).
Nhấn Chơi và bắt một khối: màn hình sẽ hiện 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 Tạo trò chơi với Pygame
Tự luyện tập: Playground Pygame