Menu
CoddyTech

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ũ.

challenge icon

Thử thách

Dễ

Đếm số lần bắt được khối trên màn hình.

  1. Trước vòng lặp, tạo font = pygame.font.Font(None, 32) và score = 0.
  2. Cộng 1 vào score khi giỏ bắt được một khối.
  3. 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