详解pygame捕获键盘事件的两种方式

这篇文章主要介绍了详解pygame捕获键盘事件的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

方式1:在pygame中使用pygame.event.get()方法捕获键盘事件,使用这个方式捕获的键盘事件必须要是按下再弹起才算一次。

示例示例:

for event in pygame.event.get(): # 捕获键盘事件 if event.type == pygame.QUIT: # 判断按键类型 print("按下了退出按键")

方式2:在pygame中可以使用pygame.key.get_pressed()来返回所有按键元组,通过判断键盘常量,可以在元组中判断出那个键被按下,如果被按下则元组中就会存在这个按键信息。通过这样的方式也可以捕获到键盘的事件,并且不需要按下再弹起的操作,一按下就会有响应,灵活性比较高。

示例代码

mykeyslist = pygame.key.get_pressed() # 获取按键元组信息 if mykeyslist[pygame.K_RIGHT]: # 如果按键按下,这个值为1 print("按下了方向右键")

总结:

两种方式的比较:方式1的灵活性没有方式2的好,如果对灵活性要求高的游戏,一般建议使用方式2。

pygame按键持续按下响应

在写一个pygame 的一个小的飞机大战程序但是碰到一个小问题,仅此记录通过键盘事件操控飞机的左右移动:elif event.type == KEYDOWN: # 检测按键是否是a或者left if event.key == K_a or event.key == K_LEFT: plane_temp.move_left()虽然能实现移动,但是每一次的移动都需要按一下按钮,使我感觉很难受想实现可以持续按下,并且可以相应的效果查资料发现pygame.key.set_repeat() control how held keys are repeatedset_repeat() -> None set_repeat(delay, interval) -> None When thekeyboard repeat is enabled, keys that are held down will generatemultiple pygame.KEYDOWN events. The delay is the number ofmilliseconds before the first repeated pygame.KEYDOWN will be sent.After that another pygame.KEYDOWN will be sent every intervalmilliseconds. If no arguments are passed the key repeat is disabled.When pygame is initialized the key repeat is disabled.按键是认只能按下一次,于是就取了一个巧,查看哪些按键是已进按下的,后通过循环实现对应操作key_pressed = pygame.key.get_pressed() if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT] plane_temp.move_left()pygame的对应帮助文档:https://www.pygame.org/docs/ref/key.html#comment_pygame_key_set_repeat

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...