跟随指针
本课属于 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)第一行将元组拆分到两个变量中。第二行会在该位置画一个圆环,这样玩家就能看到指向的位置。最后绘制圆环,也就是在宝石之后绘制,否则宝石会挡住它。
如果在循环开始前只读取一次位置,圆环就会停留在游戏开始时指针所在的位置。
挑战
简单绘制一个跟随鼠标指针的圆环。
- 在循环中,绘制宝石后,使用
pygame.mouse.get_pos()读取指针的位置。 - 在该位置绘制一个白色的
(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 在线编辑器