Theo con trỏ
Thuộc phần Vòng lặp trò chơi trong hành trình Pygame của Coddy. Bài học 13 trên 35.
Chương này sẽ tạo game Gem Hunt, một trò chơi bạn điều khiển bằng chuột. Hình thoi xanh nhạt là viên ngọc: một đa giác có bốn đỉnh được tính từ gx và gy.
pygame.mouse.get_pos() trả về vị trí con trỏ trong cửa sổ dưới dạng (x, y), được đo từ góc trên bên trái như mọi thứ khác. Đọc vị trí này trong vòng lặp để nó luôn được cập nhật ở mỗi khung hình:
mouse_x, mouse_y = pygame.mouse.get_pos()
pygame.draw.circle(screen, (240, 240, 240), (mouse_x, mouse_y), 10, 2)Dòng đầu tiên giải nén tuple thành hai biến. Dòng thứ hai vẽ một vòng tròn tại đó để người chơi thấy con trỏ đang chỉ vào đâu. Hãy vẽ vòng tròn sau cùng, sau viên ngọc, nếu không viên ngọc sẽ che mất nó.
Đọc vị trí một lần trước vòng lặp, vòng tròn sẽ đứng yên tại nơi con trỏ ở lúc trò chơi bắt đầu.
Thử thách
DễVẽ một vòng tròn đi theo con trỏ chuột.
- Trong vòng lặp, sau khi vẽ viên ngọc, hãy đọc vị trí con trỏ bằng
pygame.mouse.get_pos(). - Vẽ một vòng tròn màu trắng tại đó với
(240, 240, 240): bán kính10và độ rộng2.
Nhấn Chơi rồi di chuyển con trỏ trên trò chơi: vòng tròn sẽ đi theo con trỏ. Sau đó nhấn Kiểm tra.
Tự làm thử
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Gem Hunt")
clock = pygame.time.Clock()
gx, gy = 225, 165
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((30, 30, 46))
gem_points = [(gx + 15, gy), (gx + 30, gy + 15), (gx + 15, gy + 30), (gx, gy + 15)]
pygame.draw.polygon(screen, (80, 220, 255), gem_points)
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