Nhấp vào viên ngọc
Thuộc phần Vòng lặp trò chơi trong hành trình Pygame của Coddy. Bài học 14 trên 35.
get_pos cho biết con trỏ đang ở đâu. Một lần nhấp là một sự kiện: khi nút chuột được nhấn xuống, vòng lặp sự kiện nhận một sự kiện pygame.MOUSEBUTTONDOWN trong khung hình đó. event.pos cho biết vị trí nhấp chuột.
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
if gx <= x <= gx + 30 and gy <= y <= gy + 30:
print("Got it!")Viên ngọc nằm gọn trong hình vuông có kích thước 30 x 30, bắt đầu từ (gx, gy). Bạn nhấp trúng viên ngọc khi x nằm giữa cạnh trái và cạnh phải của hình vuông, còn y nằm giữa cạnh trên và cạnh dưới. Python cho phép bạn viết gx <= x <= gx + 30 để diễn đạt “x nằm trong khoảng từ gx đến gx + 30”.
random.randint(a, b) chọn một số nguyên từ a đến b, vì vậy viên ngọc bị bắt có thể nhảy đến một vị trí mới.
Thử thách
DễKhi bạn nhấp vào viên ngọc, hãy làm cho nó nhảy đi nơi khác.
- Thêm
import randomở đầu. - Trong vòng lặp sự kiện, khi có
MOUSEBUTTONDOWN, nếuevent.posnằm trong hình vuông từ(gx, gy)đến(gx + 30, gy + 30), hãy đặtgx = random.randint(15, 435)vàgy = random.randint(55, 315).
Nhấn Chơi rồi nhấp vào viên ngọc: nó sẽ nhảy đến một vị trí mới. 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)
mouse_x, mouse_y = pygame.mouse.get_pos()
pygame.draw.circle(screen, (240, 240, 240), (mouse_x, mouse_y), 10, 2)
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