K_a和K_d没有起作用的原因是因为在判断按键类型时,使用了错误的常量K_q和K_d。正确的常量应该是K_a和K_LEFT以及K_d和K_RIGHT。代码中已经进行了修改,你可以再次尝试运行程序。另外,你也可以使用pygame.key.get_pressed()函数来获取当前键盘上所有按键的状态,以实现多个按键的组合触发事件。我在代码中也给出了相关注释,你可以参考一下。
修改后的代码如下:
python
import pygame
from pygame.locals import *
def main():
'''完成整个程序的控制'''
#创建一个窗口
screen = pygame.display.set_mode((480,700),0,32)
#创建一个图片,当作背景
background = pygame.image.load('./images/background.png')
#创建一个图片,玩家飞机
player = pygame.image.load('./images/me2.png')
#将背景图片贴到窗口中
screen.blit(background,(0,0))
#将背景图片贴到窗口中
screen.blit(player,(189,520))
while True:
#获取事件
for event in pygame.event.get():
#判断事件类型
if event.type== pygame.QUIT:
#执行pygame退出
pygame.quit()
#python程序退出
exit()
elif event.type == pygame.KEYDOWN:
#检验是否为a或者left
if event.key== K_a or event.key==K_LEFT:
print('左')
#检验按键是否为d或者right
if event.key==K_d or event.key==K_RIGHT:
print('右')
#检验按键是否为空格
if event.key==K_SPACE:
print('空格')
#监听键盘事件
key_pressed = pygame.key.get_pressed()
if key_pressed[K_w] or key_pressed[K_UP]:
print('上')
if key_pressed[K_s] or key_pressed[K_DOWN]:
print('下')
if key_pressed[K_a] or key_pressed[K_LEFT]:
print('左')
if key_pressed[K_d] or key_pressed[K_RIGHT]:
print('右')
if key_pressed[K_SPACE]:
print('空格')
#显示窗口中的内容
pygame.display.update()
if __name__=='__main__':
main()
希望能解决您的问题!如果还有其他疑问,请随时提出。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |