5,504
社区成员




# 定义向上移动方法,当飞机移动到边框位置时,无法移动
if event.key == pygame.K_w or event.key == pygame.K_UP :
if self.myAircraftRect[1] <= 0:
self.myAircraftRect[1] = 0
else:
self.myAircraftRect[1] -= self.speed
# 定义向下移动方法,当飞机移动到边框位置时,无法移动
if event.key == pygame.K_DOWN or event.key == pygame.K_s:
if self.myAircraftRect[1] >= HEIGHT - MY_AIRCRAFT_HEIGHT:
self.myAircraftRect[1] = HEIGHT - MY_AIRCRAFT_HEIGHT
else:
self.myAircraftRect[1] += self.speed
# 定义向左移动方法,当飞机移动到边框位置时,无法移动
if event.key == pygame.K_LEFT or event.key == pygame.K_a:
if self.myAircraftRect[0] <= 0:
self.myAircraftRect[0] = 0
else:
self.myAircraftRect[0] -= self.speed
# 定义向右移动方法,当飞机移动到边框位置时,无法移动
if event.key == pygame.K_RIGHT or event.key == pygame.K_d:
if self.myAircraftRect[0] >= WIDTH - MY_AIRCRAFT_WIDTH:
self.myAircraftRect[0] = WIDTH - MY_AIRCRAFT_WIDTH
else:
self.myAircraftRect[0] += self.speed
在中文模式下,不行.改成英文模式就可以了
根据您提供的代码,按方向键可以移动飞机,但按WASD键却没有效果。出现这种情况可能是因为键盘事件的处理方式不正确。
在Pygame中,键盘事件的处理需要通过pygame.event.get()方法获取事件,并对事件进行处理。您提供的代码没有包含获取事件的过程,可能是因为此部分代码未被包含在循环中。
建议您将键盘事件处理的代码包含在主循环中,示例代码如下:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w or event.key == pygame.K_UP :
# 向上移动逻辑
if event.key == pygame.K_s or event.key == pygame.K_DOWN :
# 向下移动逻辑
if event.key == pygame.K_a or event.key == pygame.K_LEFT :
# 向左移动逻辑
if event.key == pygame.K_d or event.key == pygame.K_RIGHT :
# 向右移动逻辑
请注意,在处理键盘事件时,需要根据按下的键进行处理,而不是通过按键名称进行判断。例如,使用event.key
判断W键对应的按键代码pygame.K_w
,而不是判断键名字符串"w"
。
如果您已经将键盘事件处理的代码包含在主循环中,请确保没有其他地方重写了键盘事件的处理逻辑。