for event in pygame.event.get():
if event.type == pygame.MOUSEMOTION:
dx, dy = event.rel
speed = (dx ** 2 + dy ** 2) ** (1/2) # Pythagoras theorem.
if speed >= MAX_SPEED:
quit() # Or show quit screen or whatever.
# Define this globally (or somewhere where it will only be set on startup).
# Also, use a better name than 'first'. Something that represent the logic for your game.
first = False
for event in pygame.event.get():
if event.type == pygame.MOUSEMOTION:
dx, dy = event.rel
speed = (dx ** 2 + dy ** 2) ** (1/2) # Pythagoras theorem.
if speed >= MAX_SPEED and first:
quit() # Or show quit screen or whatever.
first = True
您可以通过
pygame.mouse.get_pos()
函数跟踪鼠标位置的每一帧,当鼠标位置发生变化时,请检查pygame.time.get_ticks()
的时间比如:
当然euclidian distance between two points可以相当容易地计算出来
编辑:
MOUSEMOTION
事件有一个属性rel
,它表示鼠标相对于其先前位置移动了多少。使用这个属性,我们可以使用毕达哥拉斯定理来计算速度(**
在Python中表示功率)。因此,在事件循环中,可以执行以下操作:确保在循环之前定义
MAX_SPEED
(例如,作为全局变量)这种方法的一个问题是,第一个事件将有一个相对于原点的位置,即当游戏开始时,如果鼠标位于(100100),那么
rel
属性将是(100100)因为您可能不想在应用程序开始时就强制执行游戏规则,所以这应该不是问题。但是,如果您希望在执行此规则的情况下打开游戏,则需要跳过第一个
MOUSEMOTION
事件。这可以通过检查布尔值来实现相关问题 更多 >
编程相关推荐