这里是一个示例代码,展示了如何在按下按键时停止移动,即使按键尚未释放:
import pygame
import sys
pygame.init()
# 创建窗口和画布
window_width, window_height = 800, 600
window = pygame.display.set_mode((window_width, window_height))
canvas = pygame.Surface((window_width, window_height))
# 初始化位置和速度
x, y = window_width // 2, window_height // 2
speed = 5
running = True
move_left = False
move_right = False
move_up = False
move_down = False
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
# 按下按键时设置移动的方向
if event.key == pygame.K_LEFT:
move_left = True
elif event.key == pygame.K_RIGHT:
move_right = True
elif event.key == pygame.K_UP:
move_up = True
elif event.key == pygame.K_DOWN:
move_down = True
elif event.type == pygame.KEYUP:
# 松开按键时停止移动
if event.key == pygame.K_LEFT:
move_left = False
elif event.key == pygame.K_RIGHT:
move_right = False
elif event.key == pygame.K_UP:
move_up = False
elif event.key == pygame.K_DOWN:
move_down = False
# 移动物体
if move_left:
x -= speed
elif move_right:
x += speed
elif move_up:
y -= speed
elif move_down:
y += speed
# 渲染画布
canvas.fill((0, 0, 0))
pygame.draw.circle(canvas, (255, 255, 255), (x, y), 10)
window.blit(canvas, (0, 0))
pygame.display.flip()
pygame.quit()
sys.exit()
在这个示例中,我们使用pygame库来创建窗口和处理事件。我们定义了四个布尔变量move_left
、move_right
、move_up
和move_down
,用于表示在按下相应的按键时是否移动。在事件循环中,当按下或松开某个按键时,我们会更新这些变量的值。然后根据这些变量的值来确定物体的移动方向。这样,即使在按键尚未释放的情况下,物体也可以停止移动。