Đếm các vì sao
Thuộc phần Python trong cửa sổ trò chơi trong hành trình Pygame của Coddy. Bài học 32 trên 33.
Người chơi cần biết bầu trời đã đầy đến mức nào. Hiển thị số lượng trên tổng số hai mươi ở góc trên bên trái:
text = font.render(f"Stars: {len(stars)}/20", True, (230, 230, 240))
screen.blit(text, (20, 20))f-string kết hợp một giá trị, len(stars), với văn bản thuần, /20. Khi có bảy ngôi sao, dòng chữ sẽ là Stars: 7/20.
Tạo phông chữ ở phần thiết lập, cạnh stars = []. Tạo phông chữ sẽ tải phông chữ, việc này mất thời gian, nên chỉ làm một lần. Kết xuất văn bản không tốn nhiều thời gian và diễn ra ở mỗi khung hình, vì vậy số lượng luôn được cập nhật.
Vẽ nhãn sau cùng trong phần vẽ để không ngôi sao nào che khuất nó.
Thử thách
DễHiển thị số lượng ngôi sao trên bầu trời.
- Trong phần thiết lập, tạo
font = pygame.font.Font(None, 36). - Ở cuối phần vẽ, hiển thị
f"Stars: {len(stars)}/20"bằng màu(230, 230, 240)và blit văn bản ở vị trí (20, 20).
Nhấn Chơi rồi nhấp chuột: số đếm tăng từ Stars: 0/20. Sau đó nhấn Kiểm tra.
Tự làm thử
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Thiết lập mọi thứ ở đây, trước vòng lặp (loop) của trò chơi.
stars = []
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
stars.append(event.pos)
# Thay đổi mọi thứ ở đây, mỗi khung hình một lần.
screen.fill((20, 24, 48))
# Vẽ ở đây, sau khi tô nền.
pygame.draw.circle(screen, (240, 230, 160), (560, 80), 40)
pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))
for star in stars:
colour = (255, 255, 255)
if random.randint(1, 30) == 1:
colour = (110, 120, 170)
pygame.draw.circle(screen, colour, star, 3)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Tất cả bài học trong Python trong cửa sổ trò chơi
1Cửa sổ đầu tiên
Chương trình đầu tiên của bạnIn ra một thông điệpIn ra một sốMàu sắc dưới dạng sốVẽ mặt trăngTự luyện tập: Playground Pygame