Menu
CoddyTech

跟随指针

本课属于 Coddy Pygame 学习旅程的“游戏循环”单元。第 13 课,共 35 课。

这一章将制作 Gem Hunt,这是一个用鼠标玩的游戏。浅蓝色菱形就是宝石:它是一个多边形,四个顶点的位置根据 gx 和 gy 计算得出。

pygame.mouse.get_pos() 会返回指针在窗口中的位置,格式为 (x, y),与其他位置一样,从左上角开始测量。在循环中读取它,这样每一帧的位置都是最新的:

mouse_x, mouse_y = pygame.mouse.get_pos()
pygame.draw.circle(screen, (240, 240, 240), (mouse_x, mouse_y), 10, 2)

第一行将元组拆分到两个变量中。第二行会在该位置画一个圆环,这样玩家就能看到指向的位置。最后绘制圆环,也就是在宝石之后绘制,否则宝石会挡住它。

如果在循环开始前只读取一次位置,圆环就会停留在游戏开始时指针所在的位置。

challenge icon

挑战

简单

绘制一个跟随鼠标指针的圆环。

  1. 在循环中,绘制宝石后,使用 pygame.mouse.get_pos() 读取指针的位置。
  2. 在该位置绘制一个白色的 (240, 240, 240) 圆环:半径为 10、线宽为 2 的圆。

按“运行”并将指针移到游戏区域上方:圆环会跟随指针。然后按“检查”。

亲手试试

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()

游戏循环中的所有课

自己练习: Pygame 在线编辑器