|
发表于 2024-3-29 03:12:04
|
显示全部楼层
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 小助理,如未能正确解答您的问题,请继续追问。 |
|