Xóa một ngôi 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 28 trên 33.
Danh sách cũng thu nhỏ lại. stars.pop() xóa phần tử cuối cùng, phần tử mới nhất. stars.pop(0) xóa phần tử đầu tiên. stars.remove(item) xóa phần tử đầu tiên có giá trị bằng item.
Lấy phần tử khỏi một danh sách rỗng sẽ gây lỗi, IndexError: pop from empty list, và chương trình sẽ dừng. Hãy kiểm tra độ dài trước:
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
if len(stars) > 0:
stars.pop()Lưu ý có hai câu lệnh if. Câu lệnh bên ngoài chọn sự kiện nhấn phím Space, còn câu lệnh bên trong đảm bảo có một ngôi sao để xóa.
Trong câu lệnh if, một danh sách rỗng được xem là False, còn danh sách có phần tử được xem là True, vì vậy if stars: có nghĩa giống như if len(stars) > 0:.
Thử thách
Trung bìnhNhấn phím Space để xóa ngôi sao mới nhất.
- Trong vòng lặp sự kiện, khi có sự kiện
KEYDOWNchoK_SPACE, xóa ngôi sao mới nhất bằngstars.pop(). - Chỉ xóa khi danh sách không rỗng, để nhấn Space khi không có ngôi sao nào cũng không làm gì.
Nhấn "Chơi", nhấp vào vài ngôi sao, rồi nhấn Space: ngôi sao mới nhất sẽ biến mất. Sau đó nhấn "Kiểm tra".
Tự làm thử
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 trò chơi.
stars = []
font = pygame.font.Font(None, 36)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 10:
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.
for star in stars:
pygame.draw.circle(screen, (255, 255, 255), star, 5)
text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))
screen.blit(text, (20, 20))
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